正如您在此回答https://stackoverflow.com/a/39704027/6886308中所看到的,您可以告诉winform何时关闭,例如Notepad
。
我试着玩了一下,虽然示例中的代码工作,但有些事情困扰着我。
如果我想在Notepad
关闭时关闭我的应用程序怎么办?所以我尝试了类似的内容:
void watcher_EventArrived(object sender, EventArrivedEventArgs e)
{
if ((string)e.NewEvent["ProcessName"] == "notepad.exe")
{
Close();
}
}
它正在给我一个未处理的错误,所以我想也许重点仍然放在winform上?或者实际上是什么问题?
答案 0 :(得分:0)
您的事件处理程序位于另一个主题上,但您在表单上调用了“关闭”并且不允许 - 您需要使用Invoke((Action)Close);
这样的内容来将调用重新编组回UI线程
答案 1 :(得分:0)
您正在获取异常,因为您尝试从除创建它之外的线程关闭进程。这是不允许的。
这样做
void watcher_EventArrived(object sender, EventArrivedEventArgs e)
{
if ((string)e.NewEvent["ProcessName"] == "notepad.exe")
{
this.Invoke((MethodInvoker) delegate
{
Close();
});
}
}