C#多线程开发总结

1.         关闭Form窗体进程还在的问题
方法一:Thread.IsBackground = true;
方法二:System.Environment.Exit(0);
方法三:FormClosing方法内手动释放所有托管资源.
注意:强行关闭时都要做好全局未处理异常的处理.

2.         Thread.Abort()强制中止报错的问题
强制中止一定会报错,只有一个变通的办法,采用标识,通过标识状态来判断线程是否可以进入下一个任务处理,当前线程让它跑完。

3.         多线程更新界面解决办法
SynchronizationContext去更新界面,eg
_synchContext.Post(_ =>

{

    this.lblTest.Text = “aa”;

}, null);

4.         ThreadPool 自定义Thread[] 如何选择
ThreadPool
.net提供一个线程池,该线程池可用于发送工作项、处理异步 I/O、代表其他线程等待以及处理计时器。(MSDN)
ThreadPool
的优点系统提供一系列方法使用方便,而且它内部已经有优化,线程安全。
ThreadPool
的缺点无法有效的控制内部线程.

 

5.  线程同步之lock

      lock 确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。[MSDN]

      lock关键字实质是调用Monitor.Enter和Monitor.Exit两个方法的简化语法.

转载于:https://www.cnblogs.com/DanielChow/archive/2011/08/30/2040908.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值