C#-Task(任务)和Thread(线程)的区别
C# - Task(任务)和Thread(线程)的区别
本⽂介绍了任务和线程的定义和使⽤,以及两者之前的差别:
什么是任务 - Task?
什么是线程 - Thread?
我们为什么需要任务?
为什么我们需要线程?
如何实现任务
如何实现线程
任务和线程之间的差异
什么是C#中的Task
异步运⾏它们。 任务是代表应该完成的某些⼯作的对象。 该任务可以告诉您⼯作是否.NET框架提供Threading.Tasks类,这样可以创建任务并异步
完成,并且操作返回结果,则任务将为您提供结果。
什么是线程?
.NET Framework在System.Threading命名空间中具有与线程相关的类。 线程是⼀⼩组可执⾏指令。
为什么我们需要任务
并⾏执⾏某些操作时都可以使⽤它。 使⽤“async”和“await”关键字在任务中实现异步很容易。
每当您要并⾏
为什么我们需要线程
需要应⽤程序同时执⾏⼏个任务的时候。
如何实现任务
void Main(string[] args) {
static void
static
Task < string > obTask = Task.Run(() => (
return“ Hello”));
return
Console.sult);
}
如何实现线程
static void
void Main(string[] args) {
static
new ThreadStart(getMyName));
Thread thread = new
new Thread(new
thread.Start();
}
void getMyName() {}
public
public void
这是任务和线程之间的⼀些区别。
Thread类⽤于在Windows中创建和操作线程。 任务代表某种异步操作,并且是任务并⾏库的⼀部分,任务并⾏库是⼀组⽤于异步和并⾏运⾏任务的API。
该任务可以返回结果。 没有直接的机制可以从线程返回结果。
⼀个任务可以同时发⽣多个进程。 线程⼀次只能运⾏⼀个任务。
使⽤“async”和“await”关键字轻松实现异步。
新的Thread()不处理线程池线程,⽽Task确实使⽤线程池线程。
任务是⽐线程更⾼层次的概念。
例⼦
class Program {
private static string result;
static void Main() {
SaySomething();
Console.WriteLine(result);
}await和async使用方法
static async TaskSaySomething() {
awaitTask.Delay(5);
result = "Hello world!";
return “Something”;
}
}
如果Task.Delay(5)被Thread.Sleep(5)替代,那么输出有什么不同?为什么?
如果使⽤Task.Delay(5),输出内容为空,因为使⽤该⽅法,进⾏异步运⾏,任务要求等待5毫秒才能继续运⾏进⽽返回内容,但是5毫秒的等待时,主程序已经调⽤输出⽅法了。
如果使⽤Thread.Sleep(5),内容应该是Something因为该⽅法让运⾏的线程停⽌5毫秒,然后继续执⾏程序。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。