我有一个第三方库,所有方法都是异步的,我有一些问题
1)这两行代码有什么区别?
Task.Run(async () => await MethodAsync());
Task.Run(() => PrepareDashBoard());
2)当我需要从按钮单击事件调用异步方法时,哪个是正确的?
// A.
private void Button_Click(object sender, EventArgs e)
{
//A Task Run call from questions 1) a or b with call to Wait or Result (if return something)
}
// B
private async void Button_Click(object sender, EventArgs e)
{
await MethodAsync();
}
TLDR:在理解其含义之前,不要直接将任务并行库(CodeTask<T>/code>等)与
要在没有WinForms甚至处理程序的情况下调用异步函数,只需使用
var res = await theFunction(args);
WinForms运行时知道如何处理线程管理(因此所有GUI交互都停留在一个线程上)。
关于Q1:
a.启动一个新的异步任务以异步调用一个异步方法,并在内部任务开始运行时完成。这极不可能是你想要的。
B.在异步任务中运行lambda,当lambda完成时,任务标记为完成。
附注:当C.5发布时,有许多文章涉及