轉自:https://www.jianshu.com/p/57df0e2e2c6f
記錄下來備忘。
程式中經常遇見操作時間過長導緻界面卡死的情況,之前一直使用委托多線程方式,如今.NET4.5提供了async await兩個關鍵字執行異步操作來解決這個問題,使用也超級簡單。
1.将按鈕事件改為異步執行
private async void Button1_Click(object sender, RoutedEventArgs e)
{
//….
Label1.text=await DoSomthing(x,y);
//…
};
在按鈕事件方法聲明添加async關鍵字,在操作耗時的方法中添加await關鍵字;如果按鈕事件中沒有await則還是會使用同步方法執行。
2.改造自定義方法DoSomthing
public async Task DoSomthing(string x,string y)
{
return Task.Run(()=>
{
//…
});
}
将原來方法體改造成lambda表達式,帶傳回值的方法傳回值使用Task,不帶傳回值使用Task,且無需return 。