美文网首页.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 。


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

相关文章

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

    程序中经常遇见操作时间过长导致界面卡死的情况,幸运的是c#5.0提供了async await两个关键字执行异步操作...

  • WPF 多线程解决假死问题

    xmal 代码 后台代码: 参考;1 WPF防止界面卡死并显示加载中效果2 BackgroundWorker原理剖析

  • 界面卡死

    转载 http://www.jianshu.com/p/cbb9ee30e4d0 原因 1、底部Tabbar隐藏、...

  • Dart异步编程Future

    Dart是单线程编程语言,如果执行了阻塞线程代码就会造成程序卡死,异步操作就是为了防止这一现象。Future类似于...

  • winform异步如何不卡界面

    快速阅读 如何在winform程序中,让界面不再卡死。 关于委托和AsyncCallback的使用。 界面卡死的原...

  • Winform异步操作防止UI界面“假死”

    创建winform项目,使用以下方式,可以实现异步执行耗时操作,防止主线程阻塞,导致界面“假死”

  • 设计模式

    《C#设计模式》 《C#设计模式》-设计模式概述 《C#设计模式》-面向对象设计原则 《C#设计模式》-单例模式 ...

  • iOS - SDWebImage

    为什么要用? 异步下载:避免界面卡死 图片缓存:图片只需要加载一次,所以应该将图片进行缓存,而框架底层已经做好了这...

  • 使用异步请求获取网页HTML源代码

    在网络编程中,异步请求是用的最多的请求方式,与同步相比,不会造成用户界面的卡死,会有较好的用户体验。现在我们使用S...

  • 进入tableView界面自动锁定到底部

    为了让tableview进入的时候就会自动定位到底部,防止先进入界面之后才会跳转到底部需要开启异步线程,

网友评论

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

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

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