美文网首页.NET.NETC#
C#异步模式防止界面卡死

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

作者: 无意若何 | 来源:发表于2016-11-13 22:01 被阅读709次

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


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

    相关文章

      网友评论

      • RenFuShuai:dothing方法中怎么给ui交互呢,比如改变label的text
        无意若何: @RenFuShuai iwy81: @RenFuShuai 我不会mvvm,一直用的codebehind,就是在按钮事件中操作

      本文标题:C#异步模式防止界面卡死

      本文链接:https://www.haomeiwen.com/subject/fpgcpttx.html