我需要的功能:当第三方应用程序的窗口关闭时,需要关闭WPF无模式窗口。现在,我对第三方应用程序没有任何问题,为此使用了一些PInvoke。
using System.Threading;
public partial class MyWindow : Window
{
public MyWindow()
{
InitializeComponent();
Timer T = new Timer(CloseCheck, this, 1000, 1000);
}
public void CloseCheck(object o)
{
MyWindow w= (MyWindow)o;
// left out all the PInvoke condictional code to simplyfy
w.Close();
}
}
如果您运行此代码,它只是一种快速杀死整个应用程序的方法。我认为这与线程有关,但我如何以正确的方式实现呢?
答案 0 :(得分:1)
您需要使用Dispatcher
从其他线程访问DependencyObjects。您也可以使用DispatcherTimer
而不是封装它的普通计时器。
答案 1 :(得分:0)
您可能需要使用Window.Dispatcher.Invoke
在主UI线程上执行Close
方法。