C#学习相关系列之多线程(六)----Task的初级使用

简介: C#学习相关系列之多线程(六)----Task的初级使用

一、Task的简介

Task是建立在线程池之上的一种多线程技术,它的出现使Thread成为历史。Task是目前首推的多线程使用方法,简单使用主要从三方面进行介绍:

1、开启线程的方式

2、有参传递

3、有返回值传递

二、代码示例:

1、开启线程的三种方式

//第一种方法
Task task = new Task(() =>
{
    console.writeLine("第一种方法");
});
task.Start();//开启了一个新的线程
//第二种方法
Task.Run(() =>
{
    console.writeLine("第二种方法");
});
//第三种方法
TaskFactory taskFactory = Task.Factory;
taskFactory.StartNew(() =>
{
    console.writeLine("第三种方法");
});

2、有参传递

//有参传递
int a=1o;
int b=5;
public static void do(int a,int b)
{
    int c=a+b;
}
Task.Run(()=>{do(a,b)});

对于参数的传递只能是定义一个有参函数,将参数定义为外部变量。第二种方法定义为结构体,在Thread参数传递中也有介绍。


3.有返回值的传递

//获取返回值方式一
Task<int> result = Task.Run<int>(() =>
{
Thread.Sleep(2000);
return DateTime.Now.Year;
});
int iResult = result.Result; //会卡界面等待
//获取返回值方式二
Task.Run<int>(() =>
{
Thread.Sleep(2000);
return DateTime.Now.Year;
}).ContinueWith(intT => //开启一个延续任务
{
int i = intT.Result;
});

其中result可以看作是Task任务的句柄,当主线中result得到结果时候,在iresult=result.result会一直卡停,等待支线程返回result,result只有当直线任务返回才会执行。


相关文章
|
4月前
|
机器学习/深度学习 监控 算法
局域网行为监控软件 C# 多线程数据包捕获算法:基于 KMP 模式匹配的内容分析优化方案探索
本文探讨了一种结合KMP算法的多线程数据包捕获与分析方案,用于局域网行为监控。通过C#实现,该系统可高效检测敏感内容、管理URL访问、分析协议及审计日志。实验表明,相较于传统算法,KMP在处理大规模网络流量时效率显著提升。未来可在算法优化、多模式匹配及机器学习等领域进一步研究。
114 0
|
11月前
|
Java 物联网 C#
C#/.NET/.NET Core学习路线集合,学习不迷路!
C#/.NET/.NET Core学习路线集合,学习不迷路!
415 0
|
9月前
|
Java 调度 开发者
Java线程池ExecutorService学习和使用
通过学习和使用Java中的 `ExecutorService`,可以显著提升并发编程的效率和代码的可维护性。合理配置线程池参数,结合实际应用场景,可以实现高效、可靠的并发处理。希望本文提供的示例和思路能够帮助开发者深入理解并应用 `ExecutorService`,实现更高效的并发程序。
206 10
|
监控 Java 调度
【Java学习】多线程&JUC万字超详解
本文详细介绍了多线程的概念和三种实现方式,还有一些常见的成员方法,CPU的调动方式,多线程的生命周期,还有线程安全问题,锁和死锁的概念,以及等待唤醒机制,阻塞队列,多线程的六种状态,线程池等
1051 6
【Java学习】多线程&JUC万字超详解
|
Linux C# 开发者
Uno Platform 驱动的跨平台应用开发:从零开始的全方位资源指南与定制化学习路径规划,助您轻松上手并精通 C# 与 XAML 编程技巧,打造高效多端一致用户体验的移动与桌面应用程序
【9月更文挑战第8天】Uno Platform 的社区资源与学习路径推荐旨在为初学者和开发者提供全面指南,涵盖官方文档、GitHub 仓库及社区支持,助您掌握使用 C# 和 XAML 创建跨平台原生 UI 的技能。从官网入门教程到进阶技巧,再到活跃社区如 Discord,本指南带领您逐步深入了解 Uno Platform,并提供实用示例代码,帮助您在 Windows、iOS、Android、macOS、Linux 和 WebAssembly 等平台上高效开发。建议先熟悉 C# 和 XAML 基础,然后实践官方教程,研究 GitHub 示例项目,并积极参与社区讨论,不断提升技能。
379 2
|
12月前
|
开发框架 缓存 算法
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
778 0
|
安全 数据库连接 API
C#一分钟浅谈:多线程编程入门
在现代软件开发中,多线程编程对于提升程序响应性和执行效率至关重要。本文从基础概念入手,详细探讨了C#中的多线程技术,包括线程创建、管理及常见问题的解决策略,如线程安全、死锁和资源泄露等,并通过具体示例帮助读者理解和应用这些技巧,适合初学者快速掌握C#多线程编程。
196 0
|
10天前
|
XML 前端开发 C#
C#编程实践:解析HTML文档并执行元素匹配
通过上述步骤,可以在C#中有效地解析HTML文档并执行元素匹配。HtmlAgilityPack提供了一个强大而灵活的工具集,可以处理各种HTML解析任务。
60 19
|
2月前
|
监控 算法 C#
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
290 0