OSDN Git Service

SlimDX から SharpDX へ機械的に移行。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 02.タイトル / CEnumSongs.cs
index e065c53..d1fd55c 100644 (file)
@@ -6,60 +6,60 @@ using System.Runtime.InteropServices;
 using System.IO;\r
 using System.Threading;\r
 using System.Runtime.Serialization.Formatters.Binary;\r
-using SlimDX;\r
-using SlimDX.Direct3D9;\r
+using SharpDX;\r
+using SharpDX.Direct3D9;\r
 using FDK;\r
 using SampleFramework;\r
 \r
 namespace DTXMania\r
 {\r
-       internal class CEnumSongs                                                       // #27060 2011.2.7 yyagi 曲リストを取得するクラス\r
-       {                                                                                                       // ファイルキャッシュ(songslist.db)からの取得と、ディスクからの取得を、この一つのクラスに集約。\r
+       internal class CEnumSongs             // #27060 2011.2.7 yyagi 曲リストを取得するクラス\r
+       {                         // ファイルキャッシュ(songslist.db)からの取得と、ディスクからの取得を、この一つのクラスに集約。\r
 \r
-               public CSongs管理 Songs管理                                         // 曲の探索結果はこのSongs管理に読み込まれる\r
+               public CSongs管理 Songs管理           // 曲の探索結果はこのSongs管理に読み込まれる\r
                {\r
                        get;\r
                        private set;\r
                }\r
 \r
-               public bool IsSongListEnumCompletelyDone                // 曲リスト探索と、実際の曲リストへの反映が完了した?\r
+               public bool IsSongListEnumCompletelyDone    // 曲リスト探索と、実際の曲リストへの反映が完了した?\r
                {\r
                        get\r
                        {\r
-                               return ( this.state == DTXEnumState.CompletelyDone );\r
+                               return (this.state == DTXEnumState.CompletelyDone);\r
                        }\r
                }\r
                public bool IsEnumerating\r
                {\r
                        get\r
                        {\r
-                               if ( thDTXFileEnumerate == null )\r
+                               if (thDTXFileEnumerate == null)\r
                                {\r
                                        return false;\r
                                }\r
                                return thDTXFileEnumerate.IsAlive;\r
                        }\r
                }\r
-               public bool IsSongListEnumerated                                // 曲リスト探索が完了したが、実際の曲リストへの反映はまだ?\r
+               public bool IsSongListEnumerated        // 曲リスト探索が完了したが、実際の曲リストへの反映はまだ?\r
                {\r
                        get\r
                        {\r
-                               return ( this.state == DTXEnumState.Enumeratad );\r
+                               return (this.state == DTXEnumState.Enumeratad);\r
                        }\r
                }\r
-               public bool IsSongListEnumStarted                               // 曲リスト探索開始後?(探索完了も含む)\r
+               public bool IsSongListEnumStarted       // 曲リスト探索開始後?(探索完了も含む)\r
                {\r
                        get\r
                        {\r
-                               return ( this.state != DTXEnumState.None );\r
+                               return (this.state != DTXEnumState.None);\r
                        }\r
                }\r
                public void SongListEnumCompletelyDone()\r
                {\r
                        this.state = DTXEnumState.CompletelyDone;\r
-                       this.Songs管理 = null;                                                // GCはOSに任せる\r
+                       this.Songs管理 = null;            // GCはOSに任せる\r
                }\r
-               public bool IsSlowdown                                                  // #PREMOVIE再生中は検索負荷を落とす\r
+               public bool IsSlowdown              // #PREMOVIE再生中は検索負荷を落とす\r
                {\r
                        get\r
                        {\r
@@ -71,9 +71,9 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               public void ChangeEnumeratePriority( ThreadPriority tp )\r
+               public void ChangeEnumeratePriority(ThreadPriority tp)\r
                {\r
-                       if ( this.thDTXFileEnumerate != null && this.thDTXFileEnumerate.IsAlive == true )\r
+                       if (this.thDTXFileEnumerate != null && this.thDTXFileEnumerate.IsAlive == true)\r
                        {\r
                                this.thDTXFileEnumerate.Priority = tp;\r
                        }\r
@@ -91,8 +91,8 @@ namespace DTXMania
                        None,\r
                        Ongoing,\r
                        Suspended,\r
-                       Enumeratad,                             // 探索完了、現在の曲リストに未反映\r
-                       CompletelyDone                  // 探索完了、現在の曲リストに反映完了\r
+                       Enumeratad,       // 探索完了、現在の曲リストに未反映\r
+                       CompletelyDone      // 探索完了、現在の曲リストに反映完了\r
                }\r
                private DTXEnumState state = DTXEnumState.None;\r
 \r
@@ -105,9 +105,9 @@ namespace DTXMania
                        this.Songs管理 = new CSongs管理();\r
                }\r
 \r
-               public void Init( List<Cスコア> ls, int n )\r
+               public void Init(List<Cスコア> ls, int n)\r
                {\r
-                       if ( state == DTXEnumState.None )\r
+                       if (state == DTXEnumState.None)\r
                        {\r
                                this.Songs管理.listSongsDB = ls;\r
                                this.Songs管理.nSongsDBから取得できたスコア数 = n;\r
@@ -119,7 +119,7 @@ namespace DTXMania
                /// </summary>\r
                public void StartEnumFromCache()\r
                {\r
-                       this.thDTXFileEnumerate = new Thread( new ThreadStart( this.t曲リストの構築1 ) );\r
+                       this.thDTXFileEnumerate = new Thread(new ThreadStart(this.t曲リストの構築1));\r
                        this.thDTXFileEnumerate.Name = "曲リストの構築";\r
                        this.thDTXFileEnumerate.IsBackground = true;\r
                        this.thDTXFileEnumerate.Start();\r
@@ -135,20 +135,20 @@ namespace DTXMania
                /// </summary>\r
                public void StartEnumFromDisk()\r
                {\r
-                       if ( state == DTXEnumState.None || state == DTXEnumState.CompletelyDone )\r
+                       if (state == DTXEnumState.None || state == DTXEnumState.CompletelyDone)\r
                        {\r
-                               Trace.TraceInformation( "★曲データ検索スレッドを起動しました。" );\r
-                               lock ( this )\r
+                               Trace.TraceInformation("★曲データ検索スレッドを起動しました。");\r
+                               lock (this)\r
                                {\r
                                        state = DTXEnumState.Ongoing;\r
                                }\r
                                // this.autoReset = new AutoResetEvent( true );\r
 \r
-                               if ( this.Songs管理 == null )         // Enumerating Songs完了後、CONFIG画面から再スキャンしたときにこうなる\r
+                               if (this.Songs管理 == null)   // Enumerating Songs完了後、CONFIG画面から再スキャンしたときにこうなる\r
                                {\r
                                        this.Songs管理 = new CSongs管理();\r
                                }\r
-                               this.thDTXFileEnumerate = new Thread( new ThreadStart( this.t曲リストの構築2 ) );\r
+                               this.thDTXFileEnumerate = new Thread(new ThreadStart(this.t曲リストの構築2));\r
                                this.thDTXFileEnumerate.Name = "曲リストの構築";\r
                                this.thDTXFileEnumerate.IsBackground = true;\r
                                this.thDTXFileEnumerate.Priority = System.Threading.ThreadPriority.Lowest;\r
@@ -162,13 +162,13 @@ namespace DTXMania
                /// </summary>\r
                public void Suspend()\r
                {\r
-                       if ( this.state != DTXEnumState.CompletelyDone &&\r
-                               ( ( thDTXFileEnumerate.ThreadState & ( System.Threading.ThreadState.Background ) ) != 0 ) )\r
+                       if (this.state != DTXEnumState.CompletelyDone &&\r
+                               ((thDTXFileEnumerate.ThreadState & (System.Threading.ThreadState.Background)) != 0))\r
                        {\r
                                // this.thDTXFileEnumerate.Suspend();           // obsoleteにつき使用中止\r
                                this.Songs管理.bIsSuspending = true;\r
                                this.state = DTXEnumState.Suspended;\r
-                               Trace.TraceInformation( "★曲データ検索スレッドを中断しました。" );\r
+                               Trace.TraceInformation("★曲データ検索スレッドを中断しました。");\r
                        }\r
                }\r
 \r
@@ -177,15 +177,15 @@ namespace DTXMania
                /// </summary>\r
                public void Resume()\r
                {\r
-                       if ( this.state == DTXEnumState.Suspended )\r
+                       if (this.state == DTXEnumState.Suspended)\r
                        {\r
-                               if ( ( this.thDTXFileEnumerate.ThreadState & ( System.Threading.ThreadState.WaitSleepJoin | System.Threading.ThreadState.StopRequested ) ) != 0 )       //\r
+                               if ((this.thDTXFileEnumerate.ThreadState & (System.Threading.ThreadState.WaitSleepJoin | System.Threading.ThreadState.StopRequested)) != 0) //\r
                                {\r
                                        // this.thDTXFileEnumerate.Resume();    // obsoleteにつき使用中止\r
                                        this.Songs管理.bIsSuspending = false;\r
                                        this.Songs管理.AutoReset.Set();\r
                                        this.state = DTXEnumState.Ongoing;\r
-                                       Trace.TraceInformation( "★曲データ検索スレッドを再開しました。" );\r
+                                       Trace.TraceInformation("★曲データ検索スレッドを再開しました。");\r
                                }\r
                        }\r
                }\r
@@ -197,15 +197,15 @@ namespace DTXMania
                public void WaitUntilSuspended()\r
                {\r
                        // 曲検索が一時中断されるまで待機\r
-                       for ( int i = 0; i < 10; i++ )\r
+                       for (int i = 0; i < 10; i++)\r
                        {\r
-                               if ( this.state == DTXEnumState.CompletelyDone ||\r
-                                       ( thDTXFileEnumerate.ThreadState & ( System.Threading.ThreadState.WaitSleepJoin | System.Threading.ThreadState.Background | System.Threading.ThreadState.Stopped ) ) != 0 )\r
+                               if (this.state == DTXEnumState.CompletelyDone ||\r
+                                       (thDTXFileEnumerate.ThreadState & (System.Threading.ThreadState.WaitSleepJoin | System.Threading.ThreadState.Background | System.Threading.ThreadState.Stopped)) != 0)\r
                                {\r
                                        break;\r
                                }\r
-                               Trace.TraceInformation( "★曲データ検索スレッドの中断待ちです: {0}", this.thDTXFileEnumerate.ThreadState.ToString() );\r
-                               Thread.Sleep( 500 );\r
+                               Trace.TraceInformation("★曲データ検索スレッドの中断待ちです: {0}", this.thDTXFileEnumerate.ThreadState.ToString());\r
+                               Thread.Sleep(500);\r
                        }\r
 \r
                }\r
@@ -215,13 +215,13 @@ namespace DTXMania
                /// </summary>\r
                public void Abort()\r
                {\r
-                       if ( thDTXFileEnumerate != null )\r
+                       if (thDTXFileEnumerate != null)\r
                        {\r
                                thDTXFileEnumerate.Abort();\r
                                thDTXFileEnumerate = null;\r
                                this.state = DTXEnumState.None;\r
 \r
-                               this.Songs管理 = null;                                        // Songs管理を再初期化する (途中まで作った曲リストの最後に、一から重複して追記することにならないようにする。)\r
+                               this.Songs管理 = null;          // Songs管理を再初期化する (途中まで作った曲リストの最後に、一から重複して追記することにならないようにする。)\r
                                this.Songs管理 = new CSongs管理();\r
                        }\r
                }\r
@@ -245,43 +245,43 @@ namespace DTXMania
                                //-----------------------------\r
                                CDTXMania.Instance.stage起動.eフェーズID = CStage.Eフェーズ.起動0_システムサウンドを構築;\r
 \r
-                               Trace.TraceInformation( "0) システムサウンドを構築します。" );\r
+                               Trace.TraceInformation("0) システムサウンドを構築します。");\r
                                Trace.Indent();\r
 \r
                                try\r
                                {\r
                                        CDTXMania.Instance.Skin.bgm起動画面.t再生する();\r
-                                       for ( int i = 0; i < CDTXMania.Instance.Skin.nシステムサウンド数; i++ )\r
+                                       for (int i = 0; i < CDTXMania.Instance.Skin.nシステムサウンド数; i++)\r
                                        {\r
-                                               if ( !CDTXMania.Instance.Skin[ i ].b排他 )    // BGM系以外のみ読み込む。(BGM系は必要になったときに読み込む)\r
+                                               if (!CDTXMania.Instance.Skin[i].b排他)  // BGM系以外のみ読み込む。(BGM系は必要になったときに読み込む)\r
                                                {\r
-                                                       CSkin.Cシステムサウンド cシステムサウンド = CDTXMania.Instance.Skin[ i ];\r
-                                                       if ( !CDTXMania.Instance.bコンパクトモード || cシステムサウンド.bCompact対象 )\r
+                                                       CSkin.Cシステムサウンド cシステムサウンド = CDTXMania.Instance.Skin[i];\r
+                                                       if (!CDTXMania.Instance.bコンパクトモード || cシステムサウンド.bCompact対象)\r
                                                        {\r
                                                                try\r
                                                                {\r
                                                                        cシステムサウンド.t読み込み();\r
-                                                                       Trace.TraceInformation( "システムサウンドを読み込みました。({0})", cシステムサウンド.strファイル名 );\r
+                                                                       Trace.TraceInformation("システムサウンドを読み込みました。({0})", cシステムサウンド.strファイル名);\r
                                                                        //if ( ( cシステムサウンド == CDTXMania.Instance.Skin.bgm起動画面 ) && cシステムサウンド.b読み込み成功 )\r
                                                                        //{\r
                                                                        //      cシステムサウンド.t再生する();\r
                                                                        //}\r
                                                                }\r
-                                                               catch ( FileNotFoundException )\r
+                                                               catch (FileNotFoundException)\r
                                                                {\r
-                                                                       Trace.TraceWarning( "システムサウンドが存在しません。({0})", cシステムサウンド.strファイル名 );\r
+                                                                       Trace.TraceWarning("システムサウンドが存在しません。({0})", cシステムサウンド.strファイル名);\r
                                                                }\r
-                                                               catch ( Exception e )\r
+                                                               catch (Exception e)\r
                                                                {\r
-                                                                       Trace.TraceError( e.Message );\r
-                                                                       Trace.TraceWarning( "システムサウンドの読み込みに失敗しました。({0})", cシステムサウンド.strファイル名 );\r
+                                                                       Trace.TraceError(e.Message);\r
+                                                                       Trace.TraceWarning("システムサウンドの読み込みに失敗しました。({0})", cシステムサウンド.strファイル名);\r
                                                                }\r
                                                        }\r
                                                }\r
                                        }\r
-                                       lock ( CDTXMania.Instance.stage起動.list進行文字列 )\r
+                                       lock (CDTXMania.Instance.stage起動.list進行文字列)\r
                                        {\r
-                                               CDTXMania.Instance.stage起動.list進行文字列.Add( "Loading system sounds ... OK " );\r
+                                               CDTXMania.Instance.stage起動.list進行文字列.Add("Loading system sounds ... OK ");\r
                                        }\r
                                }\r
                                finally\r
@@ -291,9 +291,9 @@ namespace DTXMania
                                //-----------------------------\r
                                #endregion\r
 \r
-                               if ( CDTXMania.Instance.bコンパクトモード )\r
+                               if (CDTXMania.Instance.bコンパクトモード)\r
                                {\r
-                                       Trace.TraceInformation( "コンパクトモードなので残りの起動処理は省略します。" );\r
+                                       Trace.TraceInformation("コンパクトモードなので残りの起動処理は省略します。");\r
                                        return;\r
                                }\r
 \r
@@ -301,33 +301,33 @@ namespace DTXMania
                                //-----------------------------\r
                                CDTXMania.Instance.stage起動.eフェーズID = CStage.Eフェーズ.起動00_songlistから曲リストを作成する;\r
 \r
-                               Trace.TraceInformation( "1) songlist.dbを読み込みます。" );\r
+                               Trace.TraceInformation("1) songlist.dbを読み込みます。");\r
                                Trace.Indent();\r
 \r
                                try\r
                                {\r
-                                       if ( !CDTXMania.Instance.ConfigIni.bConfigIniがないかDTXManiaのバージョンが異なる )\r
+                                       if (!CDTXMania.Instance.ConfigIni.bConfigIniがないかDTXManiaのバージョンが異なる)\r
                                        {\r
                                                CSongs管理 s = new CSongs管理();\r
-                                               s = Deserialize( strPathSongList );             // 直接this.Songs管理にdeserialize()結果を代入するのは避ける。nullにされてしまうことがあるため。\r
-                                               if ( s != null )\r
+                                               s = Deserialize(strPathSongList);   // 直接this.Songs管理にdeserialize()結果を代入するのは避ける。nullにされてしまうことがあるため。\r
+                                               if (s != null)\r
                                                {\r
                                                        this.Songs管理 = s;\r
                                                }\r
 \r
                                                int scores = this.Songs管理.n検索されたスコア数;\r
-                                               Trace.TraceInformation( "songlist.db の読み込みを完了しました。[{0}スコア]", scores );\r
-                                               lock ( CDTXMania.Instance.stage起動.list進行文字列 )\r
+                                               Trace.TraceInformation("songlist.db の読み込みを完了しました。[{0}スコア]", scores);\r
+                                               lock (CDTXMania.Instance.stage起動.list進行文字列)\r
                                                {\r
-                                                       CDTXMania.Instance.stage起動.list進行文字列.Add( "Loading songlist.db ... OK" );\r
+                                                       CDTXMania.Instance.stage起動.list進行文字列.Add("Loading songlist.db ... OK");\r
                                                }\r
                                        }\r
                                        else\r
                                        {\r
-                                               Trace.TraceInformation( "初回の起動であるかまたはDTXManiaのバージョンが上がったため、songlist.db の読み込みをスキップします。" );\r
-                                               lock ( CDTXMania.Instance.stage起動.list進行文字列 )\r
+                                               Trace.TraceInformation("初回の起動であるかまたはDTXManiaのバージョンが上がったため、songlist.db の読み込みをスキップします。");\r
+                                               lock (CDTXMania.Instance.stage起動.list進行文字列)\r
                                                {\r
-                                                       CDTXMania.Instance.stage起動.list進行文字列.Add( "Loading songlist.db ... Skip" );\r
+                                                       CDTXMania.Instance.stage起動.list進行文字列.Add("Loading songlist.db ... Skip");\r
                                                }\r
                                        }\r
                                }\r
@@ -342,35 +342,35 @@ namespace DTXMania
                                //-----------------------------\r
                                CDTXMania.Instance.stage起動.eフェーズID = CStage.Eフェーズ.起動1_SongsDBからスコアキャッシュを構築;\r
 \r
-                               Trace.TraceInformation( "2) songs.db を読み込みます。" );\r
+                               Trace.TraceInformation("2) songs.db を読み込みます。");\r
                                Trace.Indent();\r
 \r
                                try\r
                                {\r
-                                       if ( !CDTXMania.Instance.ConfigIni.bConfigIniがないかDTXManiaのバージョンが異なる )\r
+                                       if (!CDTXMania.Instance.ConfigIni.bConfigIniがないかDTXManiaのバージョンが異なる)\r
                                        {\r
                                                try\r
                                                {\r
-                                                       this.Songs管理.tSongsDBを読み込む( strPathSongsDB );\r
+                                                       this.Songs管理.tSongsDBを読み込む(strPathSongsDB);\r
                                                }\r
                                                catch\r
                                                {\r
-                                                       Trace.TraceError( "songs.db の読み込みに失敗しました。" );\r
+                                                       Trace.TraceError("songs.db の読み込みに失敗しました。");\r
                                                }\r
 \r
-                                               int scores = ( this.Songs管理 == null ) ? 0 : this.Songs管理.nSongsDBから取得できたスコア数;     // 読み込み途中でアプリ終了した場合など、CDTXMania.Instance.Songs管理 がnullの場合があるので注意\r
-                                               Trace.TraceInformation( "songs.db の読み込みを完了しました。[{0}スコア]", scores );\r
-                                               lock ( CDTXMania.Instance.stage起動.list進行文字列 )\r
+                                               int scores = (this.Songs管理 == null) ? 0 : this.Songs管理.nSongsDBから取得できたスコア数; // 読み込み途中でアプリ終了した場合など、CDTXMania.Instance.Songs管理 がnullの場合があるので注意\r
+                                               Trace.TraceInformation("songs.db の読み込みを完了しました。[{0}スコア]", scores);\r
+                                               lock (CDTXMania.Instance.stage起動.list進行文字列)\r
                                                {\r
-                                                       CDTXMania.Instance.stage起動.list進行文字列.Add( "Loading songs.db ... OK" );\r
+                                                       CDTXMania.Instance.stage起動.list進行文字列.Add("Loading songs.db ... OK");\r
                                                }\r
                                        }\r
                                        else\r
                                        {\r
-                                               Trace.TraceInformation( "初回の起動であるかまたはDTXManiaのバージョンが上がったため、songs.db の読み込みをスキップします。" );\r
-                                               lock ( CDTXMania.Instance.stage起動.list進行文字列 )\r
+                                               Trace.TraceInformation("初回の起動であるかまたはDTXManiaのバージョンが上がったため、songs.db の読み込みをスキップします。");\r
+                                               lock (CDTXMania.Instance.stage起動.list進行文字列)\r
                                                {\r
-                                                       CDTXMania.Instance.stage起動.list進行文字列.Add( "Loading songs.db ... Skip" );\r
+                                                       CDTXMania.Instance.stage起動.list進行文字列.Add("Loading songs.db ... Skip");\r
                                                }\r
                                        }\r
                                }\r
@@ -385,9 +385,9 @@ namespace DTXMania
                        finally\r
                        {\r
                                CDTXMania.Instance.stage起動.eフェーズID = CStage.Eフェーズ.起動7_完了;\r
-                               TimeSpan span = (TimeSpan) ( DateTime.Now - now );\r
-                               Trace.TraceInformation( "起動所要時間: {0}", span.ToString() );\r
-                               lock ( this )                                                   // #28700 2012.6.12 yyagi; state change must be in finally{} for exiting as of compact mode.\r
+                               TimeSpan span = (TimeSpan)(DateTime.Now - now);\r
+                               Trace.TraceInformation("起動所要時間: {0}", span.ToString());\r
+                               lock (this)             // #28700 2012.6.12 yyagi; state change must be in finally{} for exiting as of compact mode.\r
                                {\r
                                        state = DTXEnumState.CompletelyDone;\r
                                }\r
@@ -418,41 +418,41 @@ namespace DTXMania
                                //-----------------------------\r
                                //      base.eフェーズID = CStage.Eフェーズ.起動2_曲を検索してリストを作成する;\r
 \r
-                               Trace.TraceInformation( "enum2) 曲データを検索します。" );\r
+                               Trace.TraceInformation("enum2) 曲データを検索します。");\r
                                Trace.Indent();\r
 \r
                                try\r
                                {\r
-                                       if ( !string.IsNullOrEmpty( CDTXMania.Instance.ConfigIni.str曲データ検索パス ) )\r
+                                       if (!string.IsNullOrEmpty(CDTXMania.Instance.ConfigIni.strSongDataPath))\r
                                        {\r
-                                               string[] strArray = CDTXMania.Instance.ConfigIni.str曲データ検索パス.Split( new char[] { ';' } );\r
-                                               if ( strArray.Length > 0 )\r
+                                               string[] strArray = CDTXMania.Instance.ConfigIni.strSongDataPath.Value.Split(new char[] { ';' });\r
+                                               if (strArray.Length > 0)\r
                                                {\r
                                                        // 全パスについて…\r
-                                                       foreach ( string str in strArray )\r
+                                                       foreach (string str in strArray)\r
                                                        {\r
                                                                string path = str;\r
-                                                               if ( !Path.IsPathRooted( path ) )\r
+                                                               if (!Path.IsPathRooted(path))\r
                                                                {\r
-                                                                       path = CDTXMania.Instance.strEXEのあるフォルダ + str;    // 相対パスの場合、絶対パスに直す(2010.9.16)\r
+                                                                       path = CDTXMania.Instance.strEXEのあるフォルダ + str;  // 相対パスの場合、絶対パスに直す(2010.9.16)\r
                                                                }\r
 \r
-                                                               if ( !string.IsNullOrEmpty( path ) )\r
+                                                               if (!string.IsNullOrEmpty(path))\r
                                                                {\r
-                                                                       Trace.TraceInformation( "検索パス: " + path );\r
+                                                                       Trace.TraceInformation("検索パス: " + path);\r
                                                                        Trace.Indent();\r
 \r
                                                                        try\r
                                                                        {\r
-                                                                               this.Songs管理.t曲を検索してリストを作成する( path, true );\r
+                                                                               this.Songs管理.t曲を検索してリストを作成する(path, true);\r
                                                                        }\r
-                                                                       catch ( Exception e )\r
+                                                                       catch (Exception e)\r
                                                                        {\r
-                                                                               Trace.TraceError( e.Message );\r
-                                                                               Trace.TraceError( e.StackTrace );\r
-                                                                               Trace.TraceError( "例外が発生しましたが処理を継続します。" );\r
-                                                               }\r
-                                                                               finally\r
+                                                                               Trace.TraceError(e.Message);\r
+                                                                               Trace.TraceError(e.StackTrace);\r
+                                                                               Trace.TraceError("例外が発生しましたが処理を継続します。");\r
+                                                                       }\r
+                                                                       finally\r
                                                                        {\r
                                                                                Trace.Unindent();\r
                                                                        }\r
@@ -462,12 +462,12 @@ namespace DTXMania
                                        }\r
                                        else\r
                                        {\r
-                                               Trace.TraceWarning( "曲データの検索パス(DTXPath)の指定がありません。" );\r
+                                               Trace.TraceWarning("曲データの検索パス(DTXPath)の指定がありません。");\r
                                        }\r
                                }\r
                                finally\r
                                {\r
-                                       Trace.TraceInformation( "曲データの検索を完了しました。[{0}曲{1}スコア]", this.Songs管理.n検索された曲ノード数, this.Songs管理.n検索されたスコア数 );\r
+                                       Trace.TraceInformation("曲データの検索を完了しました。[{0}曲{1}スコア]", this.Songs管理.n検索された曲ノード数, this.Songs管理.n検索されたスコア数);\r
                                        Trace.Unindent();\r
                                }\r
                                //      lock ( this.list進行文字列 )\r
@@ -479,25 +479,25 @@ namespace DTXMania
                                #region [ 3) songs.db 情報の曲リストへの反映 ]\r
                                //-----------------------------\r
                                //                                      base.eフェーズID = CStage.Eフェーズ.起動3_スコアキャッシュをリストに反映する;\r
-                               Trace.TraceInformation( "enum3) songs.db の情報を曲リストへ反映します。" );\r
+                               Trace.TraceInformation("enum3) songs.db の情報を曲リストへ反映します。");\r
                                Trace.Indent();\r
 \r
                                try\r
                                {\r
-                                       if ( this.Songs管理.listSongsDB != null )\r
+                                       if (this.Songs管理.listSongsDB != null)\r
                                        {\r
                                                this.Songs管理.tスコアキャッシュを曲リストに反映する();\r
                                        }\r
                                }\r
-                               catch ( Exception e )\r
+                               catch (Exception e)\r
                                {\r
-                                       Trace.TraceError( e.Message );\r
-                                       Trace.TraceError( e.StackTrace );\r
-                                       Trace.TraceError( "例外が発生しましたが処理を継続します。" );\r
+                                       Trace.TraceError(e.Message);\r
+                                       Trace.TraceError(e.StackTrace);\r
+                                       Trace.TraceError("例外が発生しましたが処理を継続します。");\r
                                }\r
                                finally\r
                                {\r
-                                       Trace.TraceInformation( "曲リストへの反映を完了しました。[{0}/{1}スコア]", this.Songs管理.nスコアキャッシュから反映できたスコア数, this.Songs管理.n検索されたスコア数 );\r
+                                       Trace.TraceInformation("曲リストへの反映を完了しました。[{0}/{1}スコア]", this.Songs管理.nスコアキャッシュから反映できたスコア数, this.Songs管理.n検索されたスコア数);\r
                                        Trace.Unindent();\r
                                }\r
                                //      lock ( this.list進行文字列 )\r
@@ -512,23 +512,23 @@ namespace DTXMania
 \r
                                int num2 = this.Songs管理.n検索されたスコア数 - this.Songs管理.nスコアキャッシュから反映できたスコア数;\r
 \r
-                               Trace.TraceInformation( "{0}, {1}", this.Songs管理.n検索されたスコア数, this.Songs管理.nスコアキャッシュから反映できたスコア数 );\r
-                               Trace.TraceInformation( "enum4) songs.db になかった曲データ[{0}スコア]の情報をファイルから読み込んで反映します。", num2 );\r
+                               Trace.TraceInformation("{0}, {1}", this.Songs管理.n検索されたスコア数, this.Songs管理.nスコアキャッシュから反映できたスコア数);\r
+                               Trace.TraceInformation("enum4) songs.db になかった曲データ[{0}スコア]の情報をファイルから読み込んで反映します。", num2);\r
                                Trace.Indent();\r
 \r
                                try\r
                                {\r
                                        this.Songs管理.tSongsDBになかった曲をファイルから読み込んで反映する();\r
                                }\r
-                               catch ( Exception e )\r
+                               catch (Exception e)\r
                                {\r
-                                       Trace.TraceError( e.Message );\r
-                                       Trace.TraceError( e.StackTrace );\r
-                                       Trace.TraceError( "例外が発生しましたが処理を継続します。" );\r
+                                       Trace.TraceError(e.Message);\r
+                                       Trace.TraceError(e.StackTrace);\r
+                                       Trace.TraceError("例外が発生しましたが処理を継続します。");\r
                                }\r
                                finally\r
                                {\r
-                                       Trace.TraceInformation( "曲データへの反映を完了しました。[{0}/{1}スコア]", this.Songs管理.nファイルから反映できたスコア数, num2 );\r
+                                       Trace.TraceInformation("曲データへの反映を完了しました。[{0}/{1}スコア]", this.Songs管理.nファイルから反映できたスコア数, num2);\r
                                        Trace.Unindent();\r
                                }\r
                                //                                      lock ( this.list進行文字列 )\r
@@ -541,22 +541,22 @@ namespace DTXMania
                                //-----------------------------\r
                                //                                      base.eフェーズID = CStage.Eフェーズ.起動5_曲リストへ後処理を適用する;\r
 \r
-                               Trace.TraceInformation( "enum5) 曲リストへの後処理を適用します。" );\r
+                               Trace.TraceInformation("enum5) 曲リストへの後処理を適用します。");\r
                                Trace.Indent();\r
 \r
                                try\r
                                {\r
                                        this.Songs管理.t曲リストへ後処理を適用する();\r
                                }\r
-                               catch ( Exception e )\r
+                               catch (Exception e)\r
                                {\r
-                                       Trace.TraceError( e.Message );\r
-                                       Trace.TraceError( e.StackTrace );\r
-                                       Trace.TraceError( "例外が発生しましたが処理を継続します。" );\r
+                                       Trace.TraceError(e.Message);\r
+                                       Trace.TraceError(e.StackTrace);\r
+                                       Trace.TraceError("例外が発生しましたが処理を継続します。");\r
                                }\r
                                finally\r
                                {\r
-                                       Trace.TraceInformation( "曲リストへの後処理を完了しました。" );\r
+                                       Trace.TraceInformation("曲リストへの後処理を完了しました。");\r
                                        Trace.Unindent();\r
                                }\r
                                //                                      lock ( this.list進行文字列 )\r
@@ -569,22 +569,22 @@ namespace DTXMania
                                //-----------------------------\r
                                //                                      base.eフェーズID = CStage.Eフェーズ.起動6_スコアキャッシュをSongsDBに出力する;\r
 \r
-                               Trace.TraceInformation( "enum6) 曲データの情報を songs.db へ出力します。" );\r
+                               Trace.TraceInformation("enum6) 曲データの情報を songs.db へ出力します。");\r
                                Trace.Indent();\r
 \r
                                try\r
                                {\r
-                                       this.Songs管理.tスコアキャッシュをSongsDBに出力する( strPathSongsDB );\r
+                                       this.Songs管理.tスコアキャッシュをSongsDBに出力する(strPathSongsDB);\r
                                }\r
-                               catch ( Exception e )\r
+                               catch (Exception e)\r
                                {\r
-                                       Trace.TraceError( e.Message );\r
-                                       Trace.TraceError( e.StackTrace );\r
-                                       Trace.TraceError( "例外が発生しましたが処理を継続します。" );\r
+                                       Trace.TraceError(e.Message);\r
+                                       Trace.TraceError(e.StackTrace);\r
+                                       Trace.TraceError("例外が発生しましたが処理を継続します。");\r
                                }\r
                                finally\r
                                {\r
-                                       Trace.TraceInformation( "songs.db への出力を完了しました。[{0}スコア]", this.Songs管理.nSongsDBへ出力できたスコア数 );\r
+                                       Trace.TraceInformation("songs.db への出力を完了しました。[{0}スコア]", this.Songs管理.nSongsDBへ出力できたスコア数);\r
                                        Trace.Unindent();\r
                                }\r
                                //                                      lock ( this.list進行文字列 )\r
@@ -595,11 +595,11 @@ namespace DTXMania
 \r
                                //                              if ( !bSucceededFastBoot )      // songs2.db読み込みに成功したなら、songs2.dbを新たに作らない\r
                                #region [ 7) songs2.db への保存 ]           // #27060 2012.1.26 yyagi\r
-                               Trace.TraceInformation( "enum7) 曲データの情報を songlist.db へ出力します。" );\r
+                               Trace.TraceInformation("enum7) 曲データの情報を songlist.db へ出力します。");\r
                                Trace.Indent();\r
 \r
-                               SerializeSongList( this.Songs管理, strPathSongList );\r
-                               Trace.TraceInformation( "songlist.db への出力を完了しました。[{0}スコア]", this.Songs管理.nSongsDBへ出力できたスコア数 );\r
+                               SerializeSongList(this.Songs管理, strPathSongList);\r
+                               Trace.TraceInformation("songlist.db への出力を完了しました。[{0}スコア]", this.Songs管理.nSongsDBへ出力できたスコア数);\r
                                Trace.Unindent();\r
                                //-----------------------------\r
                                #endregion\r
@@ -609,10 +609,10 @@ namespace DTXMania
                        finally\r
                        {\r
                                //                              base.eフェーズID = CStage.Eフェーズ.起動7_完了;\r
-                               TimeSpan span = (TimeSpan) ( DateTime.Now - now );\r
-                               Trace.TraceInformation( "曲探索所要時間: {0}", span.ToString() );\r
+                               TimeSpan span = (TimeSpan)(DateTime.Now - now);\r
+                               Trace.TraceInformation("曲探索所要時間: {0}", span.ToString());\r
                        }\r
-                       lock ( this )\r
+                       lock (this)\r
                        {\r
                                // state = DTXEnumState.Done;           // DoneにするのはCDTXMania.Instance.cs側にて。\r
                                state = DTXEnumState.Enumeratad;\r
@@ -624,33 +624,37 @@ namespace DTXMania
                /// <summary>\r
                /// 曲リストのserialize\r
                /// </summary>\r
-               private static void SerializeSongList( CSongs管理 cs, string strPathSongList )\r
+               private static void SerializeSongList(CSongs管理 cs, string strPathSongList)\r
                {\r
                        bool bSucceededSerialize = true;\r
                        Stream output = null;\r
                        try\r
                        {\r
-                               output = File.Create( strPathSongList );\r
+                               //output = File.Create( strPathSongList );\r
+                               output = new FileStreamSSD( strPathSongList );\r
                                BinaryFormatter formatter = new BinaryFormatter();\r
-                               formatter.Serialize( output, cs );\r
+                               formatter.Serialize(output, cs);\r
                        }\r
-                       catch ( Exception e )\r
+                       catch (Exception e)\r
                        {\r
                                bSucceededSerialize = false;\r
-                               Trace.TraceError( e.Message );\r
-                               Trace.TraceError( e.StackTrace );\r
-                               Trace.TraceError( "例外が発生しましたが処理を継続します。" );\r
+                               Trace.TraceError(e.Message);\r
+                               Trace.TraceError(e.StackTrace);\r
+                               Trace.TraceError("例外が発生しましたが処理を継続します。");\r
                        }\r
                        finally\r
                        {\r
-                               output.Close();\r
-                               if ( !bSucceededSerialize )\r
+                               if ( output != null )           // #36469 outputがnullのままfinallyに来た時の対策\r
+                               {\r
+                                       output.Close();\r
+                               }\r
+                               if (!bSucceededSerialize)\r
                                {\r
                                        try\r
                                        {\r
-                                               File.Delete( strPathSongList ); // serializeに失敗したら、songs2.dbファイルを消しておく\r
+                                               File.Delete(strPathSongList); // serializeに失敗したら、songs2.dbファイルを消しておく\r
                                        }\r
-                                       catch ( Exception )\r
+                                       catch (Exception)\r
                                        {\r
                                                // 特に何もしない\r
                                        }\r
@@ -663,7 +667,7 @@ namespace DTXMania
                /// </summary>\r
                /// <param name="songs管理"></param>\r
                /// <param name="strPathSongList"></param>\r
-               private CSongs管理 Deserialize( string strPathSongList )\r
+               private CSongs管理 Deserialize(string strPathSongList)\r
                {\r
                        CSongs管理 songs管理 = null;\r
                        try\r
@@ -671,14 +675,14 @@ namespace DTXMania
                                #region [ SongListDB(songlist.db)を読み込む ]\r
                                //      byte[] buf = File.ReadAllBytes( SongListDBファイル名 );                    // 一旦メモリにまとめ読みしてからdeserializeした方が高速かと思ったら全く変わらなかったので削除\r
                                //      using ( MemoryStream input = new MemoryStream(buf, false) )\r
-                               using ( Stream input = File.OpenRead( strPathSongList ) )\r
+                               using (Stream input = File.OpenRead(strPathSongList))\r
                                {\r
                                        try\r
                                        {\r
                                                BinaryFormatter formatter = new BinaryFormatter();\r
-                                               songs管理 = (CSongs管理) formatter.Deserialize( input );\r
+                                               songs管理 = (CSongs管理)formatter.Deserialize(input);\r
                                        }\r
-                                       catch ( Exception )\r
+                                       catch (Exception)\r
                                        {\r
                                                // songs管理 = null;\r
                                        }\r
@@ -687,7 +691,7 @@ namespace DTXMania
                        }\r
                        catch\r
                        {\r
-                               Trace.TraceError( "songlist.db の読み込みに失敗しました。" );\r
+                               Trace.TraceError("songlist.db の読み込みに失敗しました。");\r
                        }\r
                        return songs管理;\r
                }\r