internal CUndoRedo管理 mgrUndoRedo管理者 = null;\r
internal Cクリップボード cbクリップボード = null;\r
\r
+ internal MakeTempDTX makeTempDTX = null;\r
+\r
public bool b選択モードである\r
{\r
get\r
//-----------------\r
#endregion\r
\r
+ #region [ Viewer再生用一時DTX生成オブジェクトを生成する。 ]\r
+ makeTempDTX = new MakeTempDTX();\r
+ #endregion\r
+\r
#region [ 譜面を初期化する。]\r
//-----------------\r
this.t譜面を初期化する();\r
this.mgrWAVリスト管理者.tDirectSoundの解放();\r
//-----------------\r
#endregion\r
+\r
+ #region [ Viewer再生用一時DTX生成オブジェクトの終了処理を行う。 ]\r
+ makeTempDTX.Dispose();\r
+ makeTempDTX = null;\r
+ #endregion\r
}\r
private void tアプリ設定の読み込み()\r
{\r
{\r
// 一時ファイル名を自動生成。\r
\r
- this.strViewer演奏用一時ファイル名 = Path.GetTempFileName();\r
- \r
+ //this.strViewer演奏用一時ファイル名 = Path.GetTempFileName(); //\r
+ this.strViewer演奏用一時ファイル名 = makeTempDTX.GetTempFileName(); // #24746 2011.4.1 yyagi add; a countermeasure for temp-flooding\r
\r
// 一時ファイルにDTXを出力。\r
\r
--- /dev/null
+using System;\r
+using System.Diagnostics;\r
+using System.Threading;\r
+using System.IO;\r
+\r
+namespace DTXCreator\r
+{\r
+ /// <summary>\r
+ /// DTXV呼び出し時にDTXファイルを%TEMP%フォルダに作成する\r
+ /// その際、直前に作ったDTXファイルを消去する\r
+ /// dispose時も消去する\r
+ /// </summary>\r
+ internal class MakeTempDTX : IDisposable // #24746 2011.4.1 yyagi add; a countermeasure for temp-flooding\r
+ {\r
+ /// <summary>\r
+ /// 直前に作成したtemp dtxファイルのフルパス\r
+ /// </summary>\r
+ string lastTempFullPath;\r
+\r
+ /// <summary>\r
+ /// コンストラクタ\r
+ /// </summary>\r
+ internal void makeTempDTX()\r
+ {\r
+ this.lastTempFullPath = null;\r
+ }\r
+\r
+ /// <summary>\r
+ /// temp dtxファイル名を作成して返す\r
+ /// その際、直前に作成したtemp dtxファイルを削除する\r
+ /// </summary>\r
+ /// <returns>temp dtxファイル名のフルパス</returns>\r
+ internal string GetTempFileName()\r
+ {\r
+ string strTempFileName = Path.GetTempFileName();\r
+\r
+ this.DeleteLastTempFile();\r
+ this.lastTempFullPath = strTempFileName;\r
+ return strTempFileName;\r
+ }\r
+\r
+ /// <summary>\r
+ /// 直前のtemp dtxファイルを削除する\r
+ /// 削除しようとしたtemp dtxファイルが見つからなかった場合も成功を返す\r
+ /// </summary>\r
+ /// <returns>true=削除成功, false=削除失敗</returns>\r
+ private bool DeleteLastTempFile()\r
+ {\r
+ bool result = true;\r
+ if ( lastTempFullPath != null )\r
+ {\r
+ try\r
+ {\r
+ File.Delete( lastTempFullPath );\r
+ }\r
+ catch \r
+ {\r
+ result = false;\r
+ }\r
+ }\r
+ return result;\r
+ }\r
+ \r
+ /// <summary>\r
+ /// Dispose処理。直前のtemp dtxファイルを削除するだけ。\r
+ /// </summary>\r
+ public virtual void Dispose()\r
+ {\r
+ DeleteLastTempFile();\r
+ lastTempFullPath = "";\r
+ }\r
+ }\r
+}\r