Пример #1
0
        /// <summary>
        /// アプリケーションの起動
        /// </summary>
        static void CreateApplicationContext()
        {
            ApplicationContext.SetupApplicationContextImpl(ApplicationContextImpl.CreateInstance(application));
            var version = ((ApplicationContextImpl)ApplicationContextImpl.GetInstance()).ApplicationFileVersionInfo;

            LOG.InfoFormat("アプリケーション(Version {0})を起動します", version.ProductVersion);
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        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);
        }
Пример #4
0
 /// <summary>
 /// アプリケーションの初期化
 /// </summary>
 static void InitializeApplicationContext()
 {
     ((ApplicationContextImpl)ApplicationContextImpl.GetInstance()).InitializeApplicationFiles();
     ((ApplicationContextImpl)ApplicationContextImpl.GetInstance()).InitializeApplication();
 }