最近在弄Kinect的开发。

我想要的效果是:有个主界面,点击一个按钮进入一个模块。

我是分别写在两个xaml里的。

因为是用kinect操作鼠标,不太准确,不太好模拟点击。。

所以就想如果鼠标悬停在这个按钮上,那我们就执行一个函数,New一个新窗口出来。

在主窗体中,先创建一个Timer,再在Timer里调用这个函数

void newwindow (object sender, EventArgs e) 
{ 
    Window new_window = new Window (); 
    new_window .InvalidateVisual(); 
    new_window .ShowDialog();    //显示新窗体
    timer.Start();  //开启timer

}

 

现在编译时没问题的,运行到这里的时候就会出错:调用线程必须为 STA,因为许多 UI 组件都需要。

其实是这个Timer不是针对于有委托,线程的这种函数用的。

对于调会用其他线程的函数,我在主函数中使用了 DispatcherTimer

DispatcherTimer timer = new DispatcherTimer();
timer.Tick += new EventHandler(newwindow ); 
timer.Interval = TimeSpan.FromSeconds(1);   //设置刷新的间隔时间

 

编译通过。

posted on 2013-04-03 01:25  ImpGeek  阅读(782)  评论(0)    收藏  举报