C# 4.5 Task Parallel in windows forms
本问题已经有最佳答案,请猛点这里访问。
我有一个第三方库,所有方法都是异步的,我有一些问题
1)这两个代码行有什么区别?
1 2 | Task.Run(async () => await MethodAsync()); Task.Run(() => PrepareDashBoard()); |
2)当我需要从按钮单击事件调用异步方法时,哪一个是正确的?
1 2 3 4 5 6 7 8 9 10 11 | // 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(); } |
tl;dr:除非您了解其含义,否则不要将任务并行库(
要在没有WinForms偶数处理程序的情况下调用异步函数,只需使用
1 | var res = await theFunction(args); |
WinForms运行时知道如何处理线程管理(因此所有GUI交互都保持在一个线程上)。
重新。Q1:
a.启动新的异步任务以异步调用异步方法,并在内部任务开始运行时完成。这不太可能是你想要的。
b.在异步任务中运行lambda,该任务在lambda完成时标记为完成。
附言:当C 5发布时,有许多文章涵盖了