现在有个Btn事件,点击Btn后会有一定的处理时间,在这个时间内要做个进度条
就是意思,点击Btn后同时显示进度条,Btn事件结束进度条关闭
我做了个自定义的进度条Window我在Btn事件中开了个DispatcherTimer的线程来运行进度条Window,但是效果却是Btn事件结束后DispatcherTimer线程才启动。。请问 一定要主线程运行结束子线程才启动?如何能做到Btn与进度条的同步呢?
就是意思,点击Btn后同时显示进度条,Btn事件结束进度条关闭
我做了个自定义的进度条Window我在Btn事件中开了个DispatcherTimer的线程来运行进度条Window,但是效果却是Btn事件结束后DispatcherTimer线程才启动。。请问 一定要主线程运行结束子线程才启动?如何能做到Btn与进度条的同步呢?
解决方案 »
- datetimepicker做差出的怪问题,求高手解答
- C# EXCEL导入到DataSet上的数据写入SQL数据源表
- CodeSmith连接Oracle后,能访问表,但不能访问视图,请问如何解决?
- 关于streamReader的几个问题 希望高手帮忙回答一下
- 请问如何将form1中的textbox1.text内容,复值给form2中的listview?
- 请教一下大哥大姐!!!!
- ***********十一想去河南玩,听说那地方比较刺激,大家说应该注意点什么。谢谢啦***********
- 请教如何在listBox中检索到自己想要的信息,可能很简单也可能很难,不会,大家看看,很有用的?
- 值传递
- 哈哈!终于有星星啦!送点分:)
- 如何在listbox里面添加Hscrollbar
- 子窗体加载自定义控件问题
用backgroundworker 异步打开这个 滚动条界面
在backgroundworker dowork 事件里面操作 数据,
在backgroundworker RunWorkerCompleted 里面 进行 关闭进度条
{
this.Cursor = Cursors.Wait; dispatcher = new DispatcherTimer();
dispatcher.Tick += new EventHandler(dispatcher_Tick);
dispatcher.Start();
......
} void dispatcher_Tick(object sender, EventArgs e)
{
dispatcher.IsEnabled = false;
Progess p = new Progess();
p.Show();
}
现在的结果是btn_CreateClick里的事件处理完后才会显示Progess....
backgroundworker 主要把这个控件 搞会就行了
一个开始线程的方法: this.backgroundWorker1.RunWorkerAsync();
执行线程的事件: backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
这里面 写 处理 方法,就是 耗时的操作,这里面打开进度条窗体
线程结束事件:backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
如果 DoWork 中的 方法执行完了,也就是说 异步操作完成了 就会执行 RunWorkerCompleted 事件,这里面可以 关掉 进度条窗体
{
//这里写你要在线程里执行的代码
Progess p = new Progess();
p.Show();
}
)).Start();
这样写写看!
调用线程必须为 STA,因为许多 UI 组件都需要。