2:C#TPL探秘
2021-04-03 06:26
标签:view 按钮 end open syn wait click lap system 理论: 1、 只要方法是 Task类型的返回值,都可以用 await 来等待调用获取返回值。 2、 如果一个返回 Task类型的方法被标记了 async,那么只要方法内部直接 return T 这个 类型的实例就可以。 3、 一个返回 Task类型的方法没有被标记了 async,那么需要方法内部直接 Task 实例。 实践(自己添加一个按钮): 2:C#TPL探秘 标签:view 按钮 end open syn wait click lap system 原文地址:https://www.cnblogs.com/jiyuwu/p/9207072.htmlprivate async void button1_Click(object sender, EventArgs e)
{
#region 方法一:
//string i1 = await F1Async();//保证异步任务执行完
//MessageBox.Show("i1=" + i1);
//string i2 = await F2Async();
//MessageBox.Show("i2=" + i2);
#endregion
#region 方法二:
Taskstring> task1 = F1Async();
Taskstring> task2 = F2Async();
string i1 = await task1;//这里保证task1的任务一定执行完,并不是这里才执行异步任务。
MessageBox.Show("i2=" + i1);
string i2 = await task2;
MessageBox.Show("i2=" + i2);
#endregion
}
static Taskstring> F1Async()
{
MessageBox.Show("F1 Start");
return Task.Run(() =>
{
System.Threading.Thread.Sleep(1000);
MessageBox.Show("F1 Run");
return "F1";
});
}
static Taskstring> F2Async()
{
MessageBox.Show("F2 Start");
return Task.Run(() =>
{
System.Threading.Thread.Sleep(2000);
MessageBox.Show("F2 Run");
return "F2";
});
}