最近在弄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); //设置刷新的间隔时间
编译通过。
浙公网安备 33010602011771号