我的目標是使用C#控制第三方應用程序。第三方應用程序可以通過COM參考進行控制。由C#啓動的應用程序保持爲運行過程直到主線程關閉
我在我的簡單控制檯應用程序中添加了參考,我可以看到類和方法沒有問題。
以下行觸發第三方應用程序啓動。它做什麼。你可以看到它在任務管理器/進程(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只有終止?
這很好。比捕獲退出事件更友好,然後嘗試手動終止該過程!非常感謝你。 – tripbrock