1

私が作成しているアプリには通知アイコンが含まれており、バックグラウンドでアクティブな状態を維持する方法です (まあ、一種の)。問題は、ユーザーがアプリのアイコンをクリックすると、アプリが再び起動することです。そのため、2 つの通知アイコンと 2 つのアクティビティがバックグラウンドで表示され、2 つのすべてが表示されます。そして、ユーザーがアイコンをもう一度クリックすると、それらすべてが 3 つ表示されるので、どういうわけかこれを停止する必要があります。私はフラグを設定し、その値をレジストリに設定するという考えを持っています.私のアプリが起動したいときは、フォームロードイベントで値を読み取ってアプリを終了します. しかし、私はそれに対処するためのより専門的な方法が必要です。たとえば、まったく開始されていません。

4

2 に答える 2

1

アプリが作成する何らかの形式のグローバル ミューテックス/イベント ハンドルを作成し、開いているルーチンでそれが存在することを確認します。存在する場合は、スタートアップ ルーティングを終了します。

この回答には(別の問題のために)いくつかの基本的なコードがありますが、それはあなたが何をしようとしているのかを示しています。

Openexisting グローバル ミューテックスの UnauthorizedAccessException

于 2013-03-03T14:07:58.487 に答える
1

これは、この回答の複製であるこの回答からのものです。アプリが既に実行されているかどうかについては、アプリのエントリ コンストラクターをチェックインします。

static void Main() 
{
    Process currentProcess = Process.GetCurrentProcess();
    var runningProcess = (from process in Process.GetProcesses()
                          where
                            process.Id != currentProcess.Id &&
                            process.ProcessName.Equals(
                              currentProcess.ProcessName,
                              StringComparison.Ordinal)
                          select process).FirstOrDefault();
    if (runningProcess != null)
    {
        ShowWindow(runningProcess.MainWindowHandle, SW_SHOWMAXIMIZED);
       return; 
    }
}
于 2013-03-03T14:13:20.530 に答える