关闭计时器上的窗口

时间:2011-05-29 16:50:26

标签: wpf timer

我需要的功能:当第三方应用程序的窗口关闭时,需要关闭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();
    }
}

如果您运行此代码,它只是一种快速杀死整个应用程序的方法。我认为这与线程有关,但我如何以正确的方式实现呢?

2 个答案:

答案 0 :(得分:1)

您需要使用Dispatcher从其他线程访问DependencyObjects。您也可以使用DispatcherTimer而不是封装它的普通计时器。

另见threading model reference

答案 1 :(得分:0)

您可能需要使用Window.Dispatcher.Invoke在主UI线程上执行Close方法。