3

C# では、コードから .NET 実行可能ファイルを実行する方法と、実行可能ファイルのインスタンスが既に実行されているかどうかを確認する方法を知っています。私がやりたいことは、インスタンス既に実行されている場合Foo、別の実行可能ファイルの C# コード内でオブジェクトのインスタンスを取得することです。

Windows アプリケーションがあります (.NET バージョンの Outlook など)。ユーザーはアプリケーションを通常どおり使用できますが、バックグラウンドで実行されているのは、サードパーティ システムからの XML ファイルを監視するプロセスです。

私が必要とするのは、ウォッチャー プロセスが .NET プログラムを実行していない場合はそれを開始し (または実行している場合はハンドルを取得し)、CreateEmail新しい/既存のプロセス内のオブジェクト インスタンスでメソッドを呼び出すことです。

4

4 に答える 4

2

.NET Remoting を使用して、既に実行中のアプリケーションでオブジェクトをアクティブ化できます。

次のサンプルを確認してください: .NET Remoting について: 3 つの概念の比較と簡略化

于 2009-10-14T20:52:53.140 に答える
1

FileSystemWatcher をメイン アプリケーションに追加してみませんか? これは、バックグラウンド プロセスが XML ファイルの監視以外に何もしていない場合です。

それが不可能な場合は、NamedPipeServerStreamandを使用しNamedPipeClientStreamて、バックグラウンド プロセスからメイン アプリケーションに「コマンド」を送信できます。メイン アプリケーションがこのコマンドを受け取ると、CreateEmailメソッドが実行されます。

于 2009-10-14T21:16:13.670 に答える
1

System.Diagnostics.Processクラスを使用します。

実行するには、Process.Start("string path");現在実行中のプロセスをリストしてチェックを実行することもできます。

于 2009-10-14T20:27:54.947 に答える
0

さて、あなたは使うことができます:

Process.GetProcessesByName(<process Name here>);

Process[] を返します。

Process クラスの静的メソッドを確認してください。非常に直感的で便利です。

于 2009-10-14T20:30:05.893 に答える