wpf线程进度控制
来源:互联网 发布:数据透视表行总计 编辑:程序博客网 时间:2024/06/05 11:53
先上源码:
namespace touchPy.Loading{public class MyLoading{public static readonly MyLoading Instance = new MyLoading();private ScheduleBarWindow _mld;//loading对象Thread _newWindowThread;//loading线程object obj = new object();bool isStart = false;private MyLoading(){}#region 载入loading控件/// <summary>/// 载入loading控件/// </summary>public void LoadingStart(){isStart = true;_newWindowThread = new Thread(new ThreadStart(Loading));_newWindowThread.SetApartmentState(ApartmentState.STA);_newWindowThread.IsBackground = true;_newWindowThread.Start();//threadLst.Add(_newWindowThread);}#endregion#region 线程载入函数private void Loading(){_mld = new ScheduleBarWindow();_mld.ShowDialog();//System.Windows.Threading.Dispatcher.Run();}#endregion#region 结束线程,关闭loading/// <summary>/// 结束线程,关闭loading/// </summary>public void LoadingEnd(){if(isStart){while (_mld == null){Thread.Sleep(10);}_mld.Dispatcher.BeginInvokeShutdown(DispatcherPriority.Normal);_newWindowThread.Abort();isStart = false;}}#endregion#region 结束线程,关闭loading/// <summary>/// 结束线程,关闭loading/// </summary>public void LoadingEnd(UCTreeView _treeView){Thread _WindowThread = new Thread(LoadingHalt);_WindowThread.SetApartmentState(ApartmentState.STA);_WindowThread.IsBackground = true;_WindowThread.Start(_treeView);}#endregionvoid LoadingHalt(object data){if (isStart){UCTreeView _tree = data as UCTreeView;bool bFlag = (bool)_tree.Dispatcher.Invoke(new Func<bool>(()=>{return _tree.IsLoaded;}), null);while (_mld == null || !bFlag){bFlag = (bool)_tree.Dispatcher.Invoke(new Func<bool>(() =>{return _tree.IsLoaded;}), null);Thread.Sleep(10);}_mld.Dispatcher.BeginInvokeShutdown(DispatcherPriority.Normal);_newWindowThread.Abort();isStart = false;}}}}
C#线程为单线程模式,所有界面资源线程之间不能共享,对于主线程中后台代码业务处理比较耗时的情况下,需要添加新的线程处理另外一些界面效果。
IsLoad属性,作为界面数据使用数据绑定方式产生延迟的返回结果,告诉用为前台渲染效果是否完成,是否取消ScheduleBarWindow等待加载窗口提示的显示。
Dispatcher.BeginInvokeShutdown关闭消息泵的处理流程,同时关闭了显示窗口。
- wpf线程进度控制
- WPF BackgroundWorker线程与进度的处理
- 开启一个线程,在线程中来控制Progress的进度
- WPF 文件拷贝进度显示
- WPF 线程
- WPF 线程
- opencv 实现进度控制
- 控制动画播放进度!
- 进度节点录入控制
- 项目进度控制----感想
- 【进度控制】SeekBar进度条
- wpf ProgressBar实时进度的测试
- WPF ProgressBar显示进度(一)
- WPF ProgressBar显示进度(二)
- WPF ProgressBar显示进度(三)
- WPF ProgressBar显示进度(四)
- WPF ProgressBar显示进度(五)
- WPF ProgressBar显示进度(六)
- Win32子控件-文本框
- 【常见Web应用安全问题】
- 【世界最佳旅游win7主题】
- 使用Maven管理项目(2)--创建Web App Project
- BOOST(1)
- wpf线程进度控制
- 提升代码内外部质量的22条经验
- qtp .net,java,webservices插件下载、安装、破解(转)
- 16个最好并且实用的jQuery插件【TheTop16.com】
- Information Leakage
- linux下configure命令详细介绍
- ExtJS 4.*基础概念总结(基于Ext4.2.1)
- 工作那些事(二)应聘时填写个人信息ABCD
- 支付宝开发接口