我的目标是使用 C# 控制第 3 方应用程序。第三方应用程序可以由 COM 引用控制。
我在我的简单控制台应用程序中添加了引用,我可以看到类和方法没有问题。
以下行触发第 3 方应用程序启动。它确实如此。您可以在 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 仅在主控制台应用程序终止而不是在到达单独线程的末尾时终止的任何想法?