C#中Task.ContinueWith连续任务使用实例的攻略如下:
什么是Task.ContinueWith
Task.ContinueWith方法是Task的一个实例方法,它可以让一个Task实例完成后直接执行一个指定的返回值为Task的委托,并返回最终值为Task的Task实例。
当我们利用Task进行异步编程时,很有可能会遇到需要在完成某个任务之后进行对应的下一步操作,这时就可以用到Task.ContinueWith方法。
Task.ContinueWith的使用方法
Task.ContinueWith方法的使用方法如下:
public Task<TResult2> ContinueWith<TResult2>(Func<Task, TResult2> continuationFunction);
这个方法接受一个Func
需要注意的是,Task.ContinueWith方法的返回值总是一个新的,与原来的Task实例不同的Task实例,并且可以被用于构造新的Task.ContinueWith实例。
Task.ContinueWith使用示例1
下面是一个使用Task.ContinueWith方法的简单例子:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
Console.WriteLine($"主线程 id:{System.Threading.Thread.CurrentThread.ManagedThreadId}");
var task1 = Task.Factory.StartNew(() =>
{
Console.WriteLine($"任务1线程 id:{System.Threading.Thread.CurrentThread.ManagedThreadId}");
System.Threading.Thread.Sleep(1000);
});
var task2 = task1.ContinueWith(previousTask =>
{
Console.WriteLine($"任务2线程 id:{System.Threading.Thread.CurrentThread.ManagedThreadId}");
});
await task2;
Console.WriteLine($"主线程中的task2线程执行完成 id:{System.Threading.Thread.CurrentThread.ManagedThreadId}");
}
}
这个示例创建了一个Task实例task1,然后创建了一个基于task1的Task.ContinueWith实例task2,在task1完成之后,task2会执行并输出一条信息,然后将执行权还给主线程并输出最后一条信息。
输出如下:
主线程 id:1
任务1线程 id:3
任务2线程 id:4
主线程中的task2线程执行完成 id:1
Task.ContinueWith使用示例2
下面是另一个使用Task.ContinueWith方法的例子:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
Console.WriteLine($"主线程 id:{System.Threading.Thread.CurrentThread.ManagedThreadId}");
var task1 = Task.Factory.StartNew(() =>
{
Console.WriteLine($"任务1线程 id:{System.Threading.Thread.CurrentThread.ManagedThreadId}");
return "Task 1 执行完成";
});
var task2 = task1.ContinueWith(previousTask =>
{
Console.WriteLine($"任务2线程 id:{System.Threading.Thread.CurrentThread.ManagedThreadId},上一个任务返回的结果:{previousTask.Result}");
return "Task 2 执行完成";
});
await task2;
Console.WriteLine($"主线程中的task2线程执行完成 id:{System.Threading.Thread.CurrentThread.ManagedThreadId}");
}
}
这个示例创建了一个Task实例task1,然后创建了一个基于task1的Task.ContinueWith实例task2,在task1完成之后,task2会执行并输出上一个任务的返回结果,然后返回一个新的字符串结果。
输出如下:
主线程 id:1
任务1线程 id:3
任务2线程 id:4,上一个任务返回的结果:Task 1 执行完成
主线程中的task2线程执行完成 id:1
这两个示例演示了Task.ContinueWith方法的基本使用,使用Task.ContinueWith方法可以帮助我们更方便地进行异步编程的任务调度。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中Task.ContinueWith连续任务使用实例 - Python技术站