日期:2014-05-20  浏览次数:20795 次

[★]WinForm中,主线程如何优雅的控制子线程?
在Winform界面中,为了客户的体验或者其他原因,我们总是将耗时的事务在另外新开的线程中进行操作,那么对于这些线程的控制,涉及到下面的这些情况,各位都是用什么方法解决呢?
1. 启动线程;
2. 线程间通讯;
3. 线程终止;
4. 线程中的异常处理;

欢迎大家一起讨论下,我发现在这块现在感觉很难驾驭。
当然,如果还有其他没有提到的,还请兄弟们直接给出。多谢!
————————————————————————————————
BTW:这个坛子里面的搜索现在很难用,我没有办法找到我想要的信息,不知道各位是否有同样的问题?

------解决方案--------------------
● 如果是需要很频繁的开线程,会使用线程池(微软的或自己写的),目前我用自己写的
● 对于线程间的通信,主要是通过线程同步或者回调方法(或者说是委托)来实现
● 线程的终止,用事件AUTORESET之类
● 线程中的异常通过事件传回到主线程处理或者是写错误日志便于进一步跟踪问题
------解决方案--------------------
委托
------解决方案--------------------
参考愚翁专栏文章CSDN第一期总结之三:Thread的问题
------解决方案--------------------
探讨
参考愚翁专栏文章CSDN第一期总结之三:Thread的问题

------解决方案--------------------
一般帮助里的方法就可以了。
------解决方案--------------------
http://msdn.microsoft.com/zh-cn/library/system.componentmodel.backgroundworker.aspx

.NET Framework 类库
BackgroundWorker 类

更新:2007 年 11 月

在单独的线程上执行操作。

BackgroundWorker 类允许您在单独的专用线程上运行操作。耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面 (UI) 似乎处于停止响应状态。如果您需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用 BackgroundWorker 类方便地解决问题。

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

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

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

BackgroundWorker 事件不跨 AppDomain 边界进行封送处理。请不要使用 BackgroundWorker 组件在多个 AppDomain 中执行多线程操作。
 

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


------解决方案--------------------
多线程 没有优雅的代码, 只有优雅的表现
------解决方案--------------------
收藏了
------解决方案--------------------

------解决方案--------------------
我也很期待高手优雅的表现。。。。
------解决方案--------------------
学习
------解决方案--------------------
up



------解决方案--------------------
收藏先
------解决方案--------------------
学习。
------解决方案--------------------
期待
------解决方案--------------------
学习,帮顶下。
------解决方案--------------------
好东西收藏了
------解决方案--------------------
学习,帮顶
------解决方案--------------------
愚翁的文章很好
------解决方案--------------------
好贴,顶下,
------解决方案--------------------
http://blog.csdn.net/Knight94/archive/2006/08/24/1111267.aspx