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