static void Main() { // Updaterを更新する。 FileUtils.copy( Application.StartupPath + "\\update\\temp\\LinearAudioPlayer\\update\\LinearAudioPlayerUpdate.exe", Application.StartupPath + "\\update\\LinearAudioPlayerUpdate.exe", true); DirectoryUtils.deleteDir(Application.StartupPath + "\\update\\temp"); // ThreadExceptionイベント・ハンドラを登録する Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException); // UnhandledExceptionイベント・ハンドラを登録する Thread.GetDomain().UnhandledException += new UnhandledExceptionEventHandler(Application_UnhandledException); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); //Initializer init = new Initializer(); //init.Initialize(); //init = null; SettingManager = new SettingManager(); SettingManager.LoadSetting(); SettingManager.restoreGlobalSetting(); initLogging(); initApplication(); initPlugin(); // データベースアップデート UpdateUtils.updateDatabase(); LinearAudioPlayer.WorkerThread = new WorkerThread(); if (LinearGlobal.LinearConfig.ViewConfig.UseWebInterface) { LinearAudioPlayer.WebServerThread = new WebServerThread(); } _playController = new PlayerController(); LinearUtils.connectDatabase(LinearGlobal.LinearConfig.PlayerConfig.SelectDatabase); LinearAudioPlayer.GridController = new GridController(); // 再生中リスト復元 _playController.restorePlayingList(); LinearGlobal.MainForm = new MainForm(); int h = LinearGlobal.MainForm.Handle.ToInt32(); // ハンドルを作成する(作成されてないとBeginInvokeでエラーになるので) StyleController = new StyleController(); StyleController.loadStyle(LinearGlobal.StyleConfig); StyleController.setColorProfile(LinearGlobal.ColorConfig); // TODO: 仮設定 switch (LinearGlobal.LinearConfig.EngineConfig.PlayEngine) { case LinearEnum.PlayEngine.FMOD: LinearGlobal.MainForm.setPlayEngineInfo("Powered by FMOD Engine"); break; case LinearEnum.PlayEngine.BASS: LinearGlobal.MainForm.setPlayEngineInfo("Powered by BASS Engine"); break; } /* 設定を復元 */ // メインフォーム //LinearGlobal.MainForm.restoreSetting(); // リストフォーム //LinearGlobal.MainForm.ListForm.restoreSetting(); // 設定フォーム //LinearGlobal.MainForm.ConfigForm.restoreConfig( // LinearGlobal.LinearConfig); // データベースアップデート(ver.0.3.0用) LinearGlobal.isCompleteStartup = true; Action resumePlayAction = () => { // レジューム情報があれば再生 MainFunction mf = new MainFunction(); if (LinearGlobal.LinearConfig.PlayerConfig.ResumeId != -1 && mf.isIdRegistDatabase(LinearGlobal.LinearConfig.PlayerConfig.ResumeId)) { LinearGlobal.CurrentPlayItemInfo.Id = LinearGlobal.LinearConfig.PlayerConfig.ResumeId; if (LinearGlobal.LinearConfig.PlayerConfig.ResumePlay && LinearGlobal.LinearConfig.PlayerConfig.ResumePosition != -1 && LinearEnum.DatabaseMode.MUSIC.Equals(LinearGlobal.DatabaseMode)) { // レジューム再生 // todo:ボリュームを操作する必要ある? Action uiAction = () => { int backupVolume = LinearGlobal.Volume; LinearGlobal.Volume = 0; LinearAudioPlayer.PlayController.play(LinearGlobal.LinearConfig.PlayerConfig.ResumeId, true, false); LinearGlobal.Volume = backupVolume; if (LinearGlobal.LinearConfig.PlayerConfig.ResumePosition != -1) { LinearAudioPlayer.PlayController.setPosition( (uint)LinearGlobal.LinearConfig.PlayerConfig.ResumePosition); } }; LinearGlobal.MainForm.ListForm.BeginInvoke(uiAction); } } }; LinearAudioPlayer.WorkerThread.EnqueueTask(resumePlayAction); if (LinearGlobal.LinearConfig.PlayerConfig.IsAutoUpdate) { Action checkUpdateAction = () => { // アップデートチェックアクション UpdateInfo updateInfo = UpdateUtils.checkSoftwareUpdate(); if (updateInfo.IsReleaseNewVersion) { Action uiAction = () => { UpdateUtils.showUpdateConfirmMessage(updateInfo.NewFileVersion); }; LinearGlobal.MainForm.BeginInvoke(uiAction); } }; LinearAudioPlayer.WorkerThread.EnqueueTask(checkUpdateAction); } Application.Run(LinearGlobal.MainForm); }