C#异步模式防止界面卡死

程序中经常遇见操作时间过长导致界面卡死的情况,幸运的是c#5.0提供了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 。


好了,搞定,运行,界面不会卡死,哈,就是这么简单。

你可能感兴趣的:(C#异步模式防止界面卡死)