問題タブ [single-instance]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 2 番目のインスタンスを開始しようとしたときの CantStartSingleInstanceException
here で説明されているアプローチを使用して、単一インスタンス アプリケーションを構築しようとしています。
このソリューションを試した理由は、アプリを起動する 2 回目の試行から最初のインスタンスにコマンドラインを渡す必要があり、これが最も簡単な方法だと思われたからです。
サポートする必要がある OS フレーバー:
- Windows XP SP3
- Windows 7 32 ビット
- Windows 7 64 ビット
3つのOSバージョンすべてで動作していますが、Windows 7 32Bitを搭載したマシンが1つあり、これが CantStartSingleInstanceException でクラッシュします。
コードは次のとおりです。
SingleInstanceController.cs:
Program.cs:
テスト目的のため、このフォームは、コマンド ライン引数を表示するリスト ボックスを含む単純なフォームです。
これがその1台のマシンで機能しない理由はありますか? 私はこれを2日間いじっていますが、理解できません...
c# - Windows.Forms: 適切な FormWindowState で既に実行されているアプリケーションをアクティブ化する
私たちのアプリケーションには次の要件があります。アプリケーションが実行中で、アプリケーションを再起動する場合、新しいインスタンスを開く代わりに、最初のインスタンスをアクティブにする必要があります。
これを実現するために、メイン ルーチンで実行中のインスタンスが既に存在するかどうかを確認します。はいの場合、次のコマンドを使用して最初のインスタンスを前面に出します。
これまでのところ、すべてが期待どおりに機能しています。このソリューションの唯一の問題は、最初のインスタンスが最小化されている場合、アプリケーションを再起動すると、最初のインスタンスがアクティブになりますが、表示されない (まだ最小化されている) ことです。
これが私の質問です。インスタンスをアクティブ化して、最後の WindowState に戻るにはどうすればよいですか。私の解決策は、 Form.Activated イベントを購読し、 eventhandler メソッドで次のコードを実行することでした:
しかし、このソリューションでは、アプリケーションを最小化する前にアプリケーションが最大化された状態にあった場合、アプリケーションをアクティブ化した後にアプリケーションに戻らないという問題があります。
どうすればこれを解決できるか考えている人はいますか? 最後のwindowStateを取得する機会はありますか?
よろしくお願いします。
c# - 同じプログラムの複数のインスタンス間の同期
私は非常に複雑なプログラミングの問題を抱えているので、数分間我慢してください。
WPF(C#)でメディアプレーヤーを作成することにしましたが、ちょっとした問題にぶつかりました。
アプリケーションをシングルインスタンスにして、ユーザーがサーバーファイルをダブルクリックしたときに、プログラムが1回だけ実行され、すべてのファイルをキューに入れて再生できるようにします。
私はMicrosoftの単一インスタンスの実装を含むいくつかの方法を試しましたが、何かを考えて実装したように、自分で作成することを決定するまで、何も機能していないようでした(これはおそらくインターネット上のどこかにありましたが、表示されませんでした)
基本的に、名前付きミューテックスを使用して、複数のインスタンスが開かれないようにし、他のインスタンスに引数をファイルに書き込むように強制します。その後、ミューテックスを作成したインスタンスがファイルを読み取ります。言うまでもなく、これはパフォーマンスに関しては非常に効果的ではありませんが、とにかく、ここにMain()関数の実装があります。VS2010によって自動的に生成されたものが本当に好きではなかったので、このMain()も最初から作成されていることに注意してください。
また、このクラスを使用してスレッド間の同期を試みています
}
これで、基本的に、ダブルクリックされたファイルごとに、Main()関数の1つのインスタンスがWindowsによって作成されます。最初のインスタンスはミューテックスを制御し、やりたいことを何でも実行します。他のインスタンスは、引数をファイルに書き込む必要があります。
さて、問題:どうやら、スレッド(すべて)が正しく同期せず、IO例外が発生することがあります。try-catchブロックはまったく何もしないように見えるため、これらの例外が正確にスローされる場所がわかりません。実際、これはtry-catchが機能するよりも少し深いと思います。
では、ユーザーが多数のファイルをダブルクリックしたときに生成されるすべてのスレッドを同期するにはどうすればよいですか?この実装は、最大3つのダブルクリックファイルで正常に機能し、3つを超えるファイル(最大9でテスト済み)でも機能する場合があります(機能する場合と機能しない場合があります)。これまでインターネットで見つけたものは、同じアプリケーションのいくつかのインスタンスが独立して実行されていることを示しています。
例を挙げていただければ幸いです:)
ありがとうございました。
android - 「android:launchMode="singleInstance"」は、結果更新のアクティビティを許可しません
単一のインスタンスに設定すると、Activity は別の Activity が Activity for results メソッドを使用してそれを更新することを許可しません。初期起動モードを単一インスタンスとして削除する必要がないように設定する必要があるフラグは何ですか?
注: ランチャー アクティビティを更新する別のアクティビティをイメージ ローダーとして使用しています。ステータスバーを使用して通知するために使用しているため、ランチャーアクティビティは単一のインスタンスである必要があります。
これは課題なので、通知に別のアクティビティを使用することはできません。
python - さまざまなモジュールからアクセスできるPythonで1つのインスタンスを作成するにはどうすればよいですか?
データベースに接続するWebアプリケーションを作成しています。現在、他のモジュールからインポートしたモジュールで変数を使用していますが、これは厄介な感じがします。
application.py
問題は、データベースへの複数の接続を取得することです( 2つの異なるモジュールにインポートするため、Session.connect()
関数が2回実行されると思います)。
複数の接続を作成せずに(つまり、アプリケーション全体で1回db
だけ呼び出す)、複数のモジュールからアクセスするにはどうすればよいですか?Session.connect()
java - Java アプリケーションの 1 つのインスタンスを実行する
重複の可能性:
単一インスタンスの Java アプリケーションを実装するには?
Java アプリケーションのインスタンスを 1 つだけ実行して、プロセスを 1 つだけにする方法はありますか? . Javaでそれを行うことは可能ですか?
android - 呼び出し元のアプリに戻るときにSingleTaskアプリが閉じないようにする
アプリAとアプリBの2つのアプリがあります。アプリBはシングルタスクアプリであり、通常、ホーム画面からこのアプリを起動して[戻る]ボタンを使用すると、に戻ることはできません。ホーム画面。ここで、アプリAがインテントを使用してアプリBを呼び出す必要があるとします。その後、ユーザーがアプリBの[戻る]ボタンを使用する場合は、本当にアプリAに戻してもらいたいのですが、[戻る]ボタンをオーバーライドしているため、[戻る]ボタンを使用してアプリAに戻ることはできません。
アプリAに戻るにはどうすればよいですか?ただし、アプリAが呼び出したときにアプリBが実行されていた場合は、アプリBが実行されたままであることを確認してください。アプリAが呼び出したときにアプリBが実行されていなかった場合、[戻る]ボタンが押されたときにアプリBはシャットダウン(破棄)されます。
私はAndroid2.2を使用しています
アップデート:
私は次のことを試しました:
渡されるバンドルデータをチェックすることで、呼び出し元のアプリによってアクティビティが起動される場合は、returnToClientをtrueに設定します。
ここで、[戻る]ボタンを押すと、アプリBがバックグラウンドに移動し、アプリAがフォアグラウンドになります。いいね。ここで、ホームボタンを押してからアプリBを起動すると、アプリBは中断したところから再開します。また良い。今悪い部分。ホームボタンを長押しして履歴リストを表示し、アプリBのアイコンをタップすると、アプリAが開始したかのように、同じデータが渡された場合とまったく同じようにonNewIntentメソッドが呼び出されます。アクティビティ。つまり、Androidは、ホーム画面からのアプリの起動を、履歴リストからの起動とは異なる方法で処理するのではないかと推測しています。なんで?何も思いつきません。歴史は誰とでも関係しているようですアクティビティを最後に起動し、その履歴の一部としてバンドルデータを保持します。これは奇妙なことであり、望ましくない動作が発生し、アプリBがアプリAから呼び出されたように見えます。
c# - TopShelf サービスの単一インスタンスを強制する
Windows サービスをホストするために TopShelf を使用しています。これは私のセットアップコードです:
アプリケーションのインスタンスを 1 つだけ同時に実行できるようにする必要があります。現在、Windows サービスと任意の数のコンソール アプリを同時に開始できます。アプリケーションが起動中に他のインスタンスを検出した場合、アプリケーションは終了する必要があります。
私はミューテックスベースのアプローチが本当に好きですが、これをTopShelfで機能させる方法がわかりません。
c# - アプリケーションを一度だけ起動 C#
私は C# でアプリケーションを作成しただけですが、何か気に入らないことがあります。アプリケーションを一度だけ実行したい。ここで、アプリケーションが実行されている場合、アプリケーションを再度実行すると、別のアプリケーションが起動します。アプリケーションを一度だけ実行できるようにしたいのですが、アプリケーションを再度実行したい場合は、別のアプリケーションを作成するのではなく、実行中のアプリケーションを開始します。
ありがとう。
c# - EventWaitHandleを使用して、複数のユーザーにまたがる単一のインスタンスを確保する
共同編集者は、SparkfunRFIDリーダーに接続するProcessingを使用してプロトタイプを作成しました。USB経由のシリアル接続を使用していると思います。私たちはプロトタイプを多くのトライアリストの家に配備しましたが、私が愚かに見落としていた一般的な使用シナリオの1つは、ユーザーの切り替えでした。したがって、プロトタイプアプリケーションの1つのインスタンスのみがマシン上のすべてのユーザーで実行されるようにするラッパーを作成しています。
シンプルなコンソールアプリとして、これを最初に試しています。コードは次のとおりです。
(注:このコードには、(1)実行中のプロトタイプではないJavaプロセスを強制終了すること、および(2)同時に開始する多数のインスタンスに応答するコードがないこと(一度に2つだけ)に問題があることを知っています。しかし、それは私のものではありません。質問についてです。)
単一のユーザーアカウントでこれをテストすると、正常に機能します。アプリを起動すると、プロトタイプが起動します。アプリの2番目のインスタンスを起動すると、最初のインスタンスがプロトタイプの最初のインスタンスを強制終了してから、2番目のインスタンスがプロトタイプの別のインスタンスを新たに起動します。
しかし、2つの異なるユーザーアカウントからこれを実行しようとすると、失敗します(サイレントに)。もし私が
- アプリケーションのインスタンスを開始すると、プロトタイプが開始されます
- ユーザーの切り替え
- アプリケーションのインスタンスを起動すると、最初に既存のインスタンスをシャットダウンする手順1から、アプリなしでプロトタイプが起動します。
誰かが私のコードの何が問題になっているのかわかりますか?同じマシン上の複数の同時ユーザーセッションでEventWaitHandleをどのように使用する必要がありますか?