欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > C# >内容正文

C#

C#异步编程的实现方式(4)——Task任务

发布时间:2025/7/14 C# 57 豆豆
生活随笔 收集整理的这篇文章主要介绍了 C#异步编程的实现方式(4)——Task任务 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

.Net Framework 4.0新增了一个System.Threading.Tasks命名空间,它包含的类提供了任务的相关操作。使用任务不仅可以获得一个抽象层,还能对底层线程进行很多统一的控制操作。这里先介绍一下Task的简单使用。

最基本的是知道怎么启动一个Task。

 

1、Task类构造函数

使用Task类的构造函数。实例化Task对象时,任务不会立即运行,而是指定Created状态。接着调用Task类的Start()方法来启动任务。使用Task类时,除了调用Start()方法,还可以调用RunSynchronously()方法。这样,任务也会启动,但是同时调用。默认情况下,任务是异步运行的。

Task类的构造函数接收一个无参无返回值的委托:

1: Task task = new Task(TaskMethod); 2: task.Start();

下面是TaskMethod方法:

1: static void TaskMethod() 2: { 3: for (int i = 0; i < 10; i++) 4: { 5: Console.WriteLine(String.Format("Running in a task. Task ID: {0}", Task.CurrentId)); 6: Thread.Sleep(500); 7: } 8: }

方法里用Task.CurrentId属性取得当前任务ID。下面是主线程:

1: static void Main(string[] args) 2: { 3: Task task = new Task(TaskMethod); 4: task.Start(); 5:  6: for (int i = 0; i < 10; i++) 7: { 8: Console.WriteLine("Running in main thread."); 9: Thread.Sleep(500); 10: } 11: 12: Console.Read(); 13: }

如果要往线程里传递参数,Task构造函数提供的重载,可以传入一个object类型的参数:

1: Task task = new Task(TaskMethodWithParameter, "Hello world"); 2: task.Start();

下面是带参的线程方法:

1: static void TaskMethodWithParameter(object param) 2: { 3: for (int i = 0; i < 10; i++) 4: { 5: Console.WriteLine(String.Format("Running in a task. Parameter: {0}", param)); 6: Thread.Sleep(500); 7: } 8: }

 


 

 

2、TaskFactory类

使用实例化的TaskFactory类,在其中把TaskMethod方法传递给StartNew()方法,就会立即启动任务。

1: TaskFactory tf = new TaskFactory(); 2: tf.StartNew(TaskMethod);

 


 

 

3、Task.Factory属性

Task类提供了一个Factory静态属性,这个属性返回一个TaskFactory对象。

1: Task task = Task.Factory.StartNew(TaskMethod);

 


 

 

后面的文章将介绍Task中的连续任务与层次任务

参考资料:《C#高级编程》,http://developer.51cto.com/art/200908/145541.htm

 

http://www.cnblogs.com/sosowjb/archive/2012/08/11/2633953.html

转载于:https://www.cnblogs.com/jes_shaw/archive/2013/03/12/2956021.html

总结

以上是生活随笔为你收集整理的C#异步编程的实现方式(4)——Task任务的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。