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<string> DoSomthing(string x,string y)
{
    return Task.Run(()=>
    {
        //...
    });
}

将原来方法体改造成lambda表达式,带返回值的方法返回值使用Task<T>,不带返回值使用Task,且无需return 。


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容