/// <summary> /// アプリケーションの起動 /// </summary> static void CreateApplicationContext() { ApplicationContext.SetupApplicationContextImpl(ApplicationContextImpl.CreateInstance(application)); var version = ((ApplicationContextImpl)ApplicationContextImpl.GetInstance()).ApplicationFileVersionInfo; LOG.InfoFormat("アプリケーション(Version {0})を起動します", version.ProductVersion); }
/// <summary> /// アプリケーションコンテキストクラスを新規作成します。 /// このメソッドはアプリケーション内で1度だけ呼び出してください。 /// </summary> /// <param name="application">WPFフレームワークのアプリケーションクラス</param> /// <returns></returns> public static IApplicationContext CreateInstance(Application application) { if (ApplicationContextImpl.instance != null) { throw new ApplicationException("アプリケーションコンテキストはすでにインスタンス化しています"); } ApplicationContextImpl.instance = new ApplicationContextImpl(application); return(ApplicationContextImpl.instance); }
public static int Main(string[] args) { MainWindow mainWindow; System.Threading.Thread.CurrentThread.Name = "Kumarinko.Kumano"; #if !DEBUG // Don't catch exceptions when debugging - we want to have Visual Studio catch them where and when // they are thrown try { System.Threading.Mutex mutex = new System.Threading.Mutex(false, System.Threading.Thread.CurrentThread.Name); if (mutex.WaitOne(0, false) == false) { MessageBox.Show("アプリケーションはすでに起動中です。\nこのアプリケーションの多重起動はできません。", "アプリケーションの起動エラー | SakuraFs", MessageBoxButton.OK, MessageBoxImage.Stop); } else { #endif application = new App(); DispatcherHelper.UIDispatcher = application.Dispatcher; DumpEnvironmentLog(); CreateApplicationContext(); ApplicationContext.Watch("データモデルの作成"); var workspace = new WorkspaceViewModel(); InitializeApplicationContext(); // [アプリケーションの実行] // - アプリケーションが終了するまで、リターンはブロックされます。 // - コメントアウトすると、ウィンドウを表示せずにアプリケーションは終了します。 ((ApplicationContextImpl)ApplicationContextImpl.GetInstance()).Workspace = workspace; ApplicationContext.Watch("メインウィンドウの作成"); mainWindow = new MainWindow(); mainWindow.DataContext = workspace; ((ApplicationContextImpl)ApplicationContextImpl.GetInstance()).MainWindow = mainWindow; SettingConfigWindowsStatus(mainWindow); // メインウィンドウの表示 application.Run(mainWindow); // アプリケーション終了時の、ウィンドウの位置を設定に保存する ApplicationContext.ApplicationSetting.WindowLocation = new Point(mainWindow.Left, mainWindow.Top); // アプリケーション終了時に行う処理の呼び出し ((ApplicationContextImpl)ApplicationContextImpl.GetInstance()).ShutdownProcess(); #if !DEBUG //ミューテックスを解放する mutex.ReleaseMutex(); } } catch (Exception e) { System.Diagnostics.Debug.WriteLine("There was a program exception: " + e); MessageBox.Show("There was a program exception: " + e); return(-1); } //catch #endif LOG.Info("アプリケーションを終了しました"); return(1); }
/// <summary> /// アプリケーションの初期化 /// </summary> static void InitializeApplicationContext() { ((ApplicationContextImpl)ApplicationContextImpl.GetInstance()).InitializeApplicationFiles(); ((ApplicationContextImpl)ApplicationContextImpl.GetInstance()).InitializeApplication(); }