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两个方法的简化语法.
--------------------------------------------------------------------------
Daniel Chow's Blog - 不管你在哪里,都要有一颗创业的心!
http://www.cnblogs.com/DanielChow/
分类:
dotNet
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?