天天看點

C# .NET4.5 異步模式防止界面卡死

轉自: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 。