标签:技术分享 tip and dll blog 主程 否则 font oid
在 WPF 中使用的等待控件,控件包括三种,普通的等待信息提示(WaitTip),进度条提示(WaitProgress),以及主程序覆盖的模拟时钟等待窗口(WaitClock),具体效果看下面的图示。
最后在异步线程启动之后,调用该子 Window 的 ShowDialog 方法即可。
需要注意的是,如果在异步线程启动之前,调用了子 Window 的 ShowDialog 方法,则是无法在异步线程中关闭等待控件,即子 Window。如下代码所示:
private void btnWaitTipTest2_Click(object sender, RoutedEventArgs e) { WaitTip waitTip = new WaitTip(this); Thread t = new Thread(new ThreadStart((Action)delegate { try { for (int i = 0; i <= 5; i++) { Thread.Sleep(1000); } waitTip.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } })); t.Start(); waitTip.Show("WaitTip Control Test2"); }
上面代码最后两行,如果互换位置,依旧可以显示等待控件,但是子线程就不会运行,也就不会关闭等待控件了,因为 Window 的 ShowDialog 方法会占住主线程,除非关闭,否则后面的代码无法运行。
UI.Dispatcher.BeginInvoke((Action)delegate (){ // 操作 UI 代码 });
dll+源工程以及Demo工程下载:http://files.cnblogs.com/files/memento/WaitControl.7z
标签:技术分享 tip and dll blog 主程 否则 font oid
原文地址:http://www.cnblogs.com/memento/p/6234857.html