Task 异步任务
与其他多线程相比,Task 可以 返回 异步执行后的结果。根据结果,我们来进一步编程

static void Main(string[] args)
{
Console.OutputEncoding = Encoding.UTF8;
//callMethod();
Method4();
Console.WriteLine("=================");
Console.ReadKey();
}
public static void Method4()
{
CancellationTokenSource cts = new CancellationTokenSource();
//创建一个任务
Task<int> task = new Task<int>(() =>
{
int sum = 0;
Console.WriteLine("使用Task执行异步操作.");//------2
for (int i = 0; i < 100; i++)
{
Thread.Sleep(100);
sum += i;
}
return sum;
},cts.Token);
//启动任务,并安排到当前任务队列线程中执行任务(System.Threading.Tasks.TaskScheduler)
task.Start();
Console.WriteLine("主线程执行其他处理"); //----1
//任务完成时执行处理。
Task cwt = task.ContinueWith(t =>
{
Thread.Sleep(1000);
Console.WriteLine("任务完成后的执行结果:{0}", t.Result.ToString());//------4
});
Console.WriteLine("主线程执行其他处理2");
//if(task.Wait(5000))
//{
// Console.WriteLine("task執行超時---------");
// cts.Cancel();
//}
//task.Wait(); // 會阻塞主線程
Console.WriteLine("task执行结束");//-----3
//cwt.Wait(); // 阻塞当前线程,直到回调执行完毕
Console.WriteLine("task回调执行结束");//-------5
Console.WriteLine("主线程执行其他处理3");
}

浙公网安备 33010602011771号