1

Visual Studio でビルドされた実行可能ファイルがあり、通常は (つまり、運用環境で) 単一インスタンス アプリケーションとして実行されます。次に示すように、プロジェクトのプロパティの [アプリケーション] タブの [Windows アプリケーション フレームワーク プロパティ] 領域にある [単一インスタンス アプリケーションの作成] チェック ボックスを使用して、これを実現しました。

ここに画像の説明を入力

私のアプリケーションはワークフロー アプリケーションであるため、あるユーザーから別のユーザーにワークフロー アイテムを渡す必要があります。関係するすべてのユーザーは、このアプリケーションを自分のコンピューターで実行しています。

ただし、私の開発環境では、複雑なバグのトラブルシューティングを行うために、複数の異なるユーザーを同時に偽装したい場合がよくあります (ユーザーを偽装するこの機能は、ユーザー自身が気付いていない機能です)。アプリケーション。複数のインスタンスを同時に開いて、それぞれが別のユーザーになりすます方が簡単です。場合によっては、アプリケーションを起動するための初期オーバーヘッドが発生した場合にのみバグが発生する可能性があるため、必要な場合があります。ユーザーコンテキストを切り替えるアプリケーションは、バグを排除する状態を解放します。

上記のチェックボックスをオフにすることで、これを簡単に達成できます。ただし、バグ修正を展開する前に、ある時点で再確認することを忘れないでください。開発用コンピューターにのみ存在するアプリケーションの外部にある何か (たとえば、レジ​​ストリ値など) を設定できれば、アプリケーションが複数インスタンス アプリケーションとして動作するようにトリガーされます。私は高低を検索しましたが、これまで誰もこの質問をしていないようです.

ここにいる人はこれに遭遇したことがありますか?どうぞよろしくお願いいたします。

4

1 に答える 1

1

これが必要なことを行うための最もエレガントな方法かどうかはわかりませんが、私たちが使用しているものです。多くの場合、アプリの複数のインスタンスをテストする必要があります (ユーザーが複数のインスタンスを実行することは許可されていません)。

VS コンパイラがコードを実行するとき、インスタンスに .vshost を付けてコードを実行するため、この方法で同時にデバッグしながらアプリを実行しても問題は発生しません。また、Windows で複数のインスタンスを実行する場合は、.EXE の名前を変更して実行するだけです。

Dim myProcesses() As Process
myProcesses = process.GetProcessesByName("NameOfYourApp")
If myProcesses.Length > 1 Then
    'Close app here 
    '(You can just .Close the startup form)
End If
于 2013-10-06T10:34:07.363 に答える