C#多线程の遇见长耗时操作以及多任务(简明记要)
4.0用 Task.Factory.StartNew(()=>{}); 4.0以下用 ThreadPool.QueueUserWorkItem(()=>{}) 4.0以上用 Task.Run(()=>{}); 多任务: Task[] tasks = new Task[maxCurrent]; for (int i = beginId; i <= maxId; i += interval, counter++) tasks[counter] = new Task(worker.TestHandler, TaskCreationOptions.LongRunning); var continuation = Task.Factory.ContinueWhenAll( tasks,(antecedents) =>{ LogInfo("All threads have loaded!"); }); foreach (Task t in tasks) t.Start(); LogInfo("All threads have been queued. Waiting to complete..."); while (!continuation.IsCompleted) Thread.Sleep(1000); static Random _random = new Random(); static void Main(string[] args) { ArrayList listThread = new ArrayList(); ArrayList listResult = new ArrayList(); for (int i = 0; i < 10; i++) { Thread thread = new Thread(new ParameterizedThreadStart(WorkThread)); thread.Start(listResult); listThread.Add(thread); } foreach (Thread thread in listThread) { thread.Join(); } foreach (int i in listResult) { Console.WriteLine(i); } } static void WorkThread(object list) { int cnt = _random.Next(1,10); ArrayList listLocal = new ArrayList(); for (int i = 0; i < cnt; i++) { listLocal.Add(cnt); Thread.Sleep(100); } lock (list) { (list as ArrayList).AddRange(listLocal); } }
他人:https://www.cnblogs.com/edisonchou/p/dotnet_multithread_learning_notes_chap1.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
2016-09-13 WPF中两个窗口的互斥