winform进度条问题

game_0513 2008-09-24 09:52:14
winfrom 中 进度条跟进时 点击其他窗体 老是容易出现“没有响应”情况,跟死机差不多,然后等他运行结束之后就好了 请问是什么原因?应该要怎么解决?
...全文
196 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ltxyxj 2009-04-24
  • 打赏
  • 举报
回复
谢谢hbxtlhx了
ss7878520 2008-10-14
  • 打赏
  • 举报
回复
学习了。
北京的雾霾天 2008-09-24
  • 打赏
  • 举报
回复
在每一次循环时都调用一下Application.DoEvents()
ClementDik 2008-09-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ClementDik 的回复:]
引用 1 楼 phy 的回复:
多线程,呵呵。你处理地方用其它线程来处理可避免停止响应的情况。


正解。
不过,如果你不熟悉多线程的话,.net2.0提供了一个叫backgroundworker的组件。在ToolBox的Components(组件)组里面。
实际上就是一个封装了多线程机制的组件。很好用。
[/Quote]

好人做到底,从MSDN上贴过来的。说实话,这个类感觉就是专门给你准备的。
BackgroundWorker 类允许您在单独的专用线程上运行操作。耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面 (UI) 似乎处于停止响应状态。如果您需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用 BackgroundWorker 类方便地解决问题。

若要在后台执行耗时的操作,请创建一个 BackgroundWorker,侦听那些报告操作进度并在操作完成时发出信号的事件。可以通过编程方式创建 BackgroundWorker,也可以将它从“工具箱”的“组件”选项卡中拖到窗体上。如果在 Windows 窗体设计器中创建 BackgroundWorker,则它会出现在组件栏中,而且它的属性会显示在“属性”窗口中。

若要设置后台操作,请为 DoWork 事件添加一个事件处理程序。在此事件处理程序中调用耗时的操作。若要启动该操作,请调用 RunWorkerAsync。若要收到进度更新通知,请对 ProgressChanged 事件进行处理。若要在操作完成时收到通知,请对 RunWorkerCompleted 事件进行处理。

注意
您必须非常小心,确保在 DoWork 事件处理程序中不操作任何用户界面对象。而应该通过 ProgressChanged 和 RunWorkerCompleted 事件与用户界面进行通信。


如果后台操作需要参数,请在调用 RunWorkerAsync 时给出参数。在 DoWork 事件处理程序内部,可以从 DoWorkEventArgs.Argument 属性中提取该参数。

xuyiazl 2008-09-24
  • 打赏
  • 举报
回复
线程+委托`~...
ClementDik 2008-09-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 phy 的回复:]
多线程,呵呵。你处理地方用其它线程来处理可避免停止响应的情况。
[/Quote]

正解。
不过,如果你不熟悉多线程的话,.net2.0提供了一个叫backgroundworker的组件。在ToolBox的Components(组件)组里面。
实际上就是一个封装了多线程机制的组件。很好用。
namhyuk 2008-09-24
  • 打赏
  • 举报
回复
用异步。

一般是用delegate.BeginInvoke().

ZengHD 2008-09-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 game_0513 的回复:]
请给出实例代码吧

[/Quote]
请给出你出错的代码
JeffChung 2008-09-24
  • 打赏
  • 举报
回复
多线程.网上多了,搜索一下吧
game_0513 2008-09-24
  • 打赏
  • 举报
回复
请给出实例代码吧
brallow 2008-09-24
  • 打赏
  • 举报
回复
多线程,呵呵。你处理地方用其它线程来处理可避免停止响应的情况。

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧