ここでの私の目的は、C# を使用してサードパーティ アプリケーションを制御することです。サードパーティ アプリケーションは、COM 参照によって制御できます。
単純なコンソール アプリケーションに参照を追加しましたが、クラスとメソッドに問題はありません。
次の行は、サードパーティ アプリケーションの起動をトリガーします。それは何をしますか。Taskmanager/Processes (mfl32.exe) で、問題なくそこに座っているのを見ることができます。
MFL32.Application mfl = new MFL32.Application();
コンソール アプリケーションが終了しても、mfl32.exe はプロセス リストに残っています。これは、閉じるための呼び出しを行っていないため、当然のことです。次に、次の行を追加しました。
mfl.Quit();
コンソール アプリケーションが実行されると、mfl32.exe が開始され、コンソール アプリケーションが閉じられると、mfl32.exe プロセスが終了します。
問題が発生するのは、私のコードでは、このアプリケーションへの呼び出しを別のスレッドで行う必要があることです。mfl32.exe プロセスはスレッドの最後で終了せず、コンソール アプリケーションが閉じたときにのみ削除されます。現在のコードは次のようになります。
namespace lt
{
class threadtest
{
public void LaserTest()
{
Console.WriteLine("Worker thread started...");
MFL32.Application mfl = new MFL32.Application();
int i = 0;
while (i < 50000)
{
i++;
}
mfl.Quit();
Console.WriteLine("Worker thread now finished!");
}
void laser_AppQuit() // Quit event handler triggered
{
Console.WriteLine("The QUIT method has been caught. It should kill the lfm32.exe process");
}
}
class Program
{
static void Main(string[] args)
{
threadtest workerObject = new threadtest();
Thread workerThread = new Thread(workerObject.LaserTest);
workerThread.Start();
Console.WriteLine("End of main thread reached");
Console.ReadKey();
}
}
}
別のスレッドの最後に到達したときではなく、メイン コンソール アプリケーションが終了したときにのみ、トリガーされた exe が終了する理由について何か考えはありますか?