C#多线程与多任务
2022/1/17 20:07:54
本文主要是介绍C#多线程与多任务,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
c#教程https://www.xin3721.com/eschool/CSharpxin3721/
此处介绍了多线程和多任务简单使用:
1、多线程 Thread,可传入参数
调用:
string id = "123456"; string name = "qt"; var data = new Data { Id = id,Name = name }; Thread t = new Thread(MainThreadWithParam); t.Start(data); // 传入参数
参数封装:
public struct Data { public string Id; public string Name; }
执行业务方法:
private object mylock = new object();//异步锁,防止多个线程调用同一个方法,应对该方法不支持并发操作的情况 // 定义线程方法: private void MainThreadWithParam(object o) { Monitor.Enter(this.mylock);//启用异步锁 Data d = (Data)o; //类型转换 Console.WriteLine("Running in a thread, received {0}-{1}", d.Id,d.Name); string id = d.Id; string name = d.Name; //用户逻辑代码 --todo Monitor.Exit(this.mylock);//关闭异步锁 }
2、多任务 Task
ThreadPool相比Thread来说具备了很多优势,但是ThreadPool却又存在一些使用上的不方便。比如:
◆ ThreadPool不支持线程的取消、完成、失败通知等交互性操作;
◆ ThreadPool不支持线程执行的先后次序;
以往,如果开发者要实现上述功能,需要完成很多额外的工作,现在,FCL中提供了一个功能更强大的概念:Task。Task在线程池的基础上进行了优化,并提供了更多的API。在FCL4.0中,如果我们要编写多线程程序,Task显然已经优于传统的方式。
调用:
string id = "123456"; var tokenSource = new CancellationTokenSource(); var token = tokenSource.Token; token.Register(() => { Console.WriteLine("task任务取消"); }); var task = Task.Factory.StartNew(() => { Console.WriteLine("执行task任务"); //执行多任务方法 MainTaskWithParam(id, tokenSource); }, token);
业务方法:
private void MainTaskWithParam(string id, CancellationTokenSource tokenSource) { //业务逻辑代码 --todo tokenSource.Cancel();//取消任务 }
总结: 实践是检验真理的唯一标准。
参考:https://www.cnblogs.com/zhaoshujie/p/11082753.html
出 处:https://www.cnblogs.com/qiantao/p/15615027.html
这篇关于C#多线程与多任务的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具