最简单解决c#在UI线程中执行耗时方法导致界面假死的方法
2016-10-30 21:00
399 查看
int sta = my_connect.login(_user_name, _password);
如上,login方法中通过http向服务器发请求,在网络状况不好或者服务器繁忙的时候,会因为迟迟等不到返回结果导致页面假死。
解决办法:
int sta = await Task.Run(() => { return my_connect.login(_user_name, _password); });
awit 关键字 等待任务执行完毕
Task.Run 开辟了一个新的线程
这样,由于UI线程没有被阻塞,解决了界面假死问题。
多线程的方法有很多,但是由于.net不允许在非UI线程访问控件,所以对于需要在长耗时任务执行完毕之后更新UI的情况下,上述方法最为合适。
相关文章推荐
- 最简单解决c#在UI线程中执行耗时方法导致界面假死的方法
- C#中 使用 Backgroundworker控制UI线程 防止界面假死情况
- C#中的多线程与UI响应-防界面假死的多线程
- Delphi Dll线程使用Synchronize同步导致线程假死的解决方法
- iOS某操作霸占主线程过久导致界面假死的一种解决方法
- 程序界面假死的一种解决方法 - 线程
- c#线程顺序执行,并解决假死
- C# WinForm程序处理后台繁忙导致前台控件假死现象解决方法
- Thread+Handler异步执行耗时操作更新UI线程界面
- iOS_某操作霸占主线程过久导致“界面假死”的一种解决方法
- 一个简单的C#多线程间同步(事件方法)的例子
- Android平台在UI Thread中执行非UI线程中定义的代码片段的几种方法
- C#工作者线程执行控件刷新方法
- C#后台线程工作时更新界面的一种处理方法
- 多线程中主线程等待所有子线程执行完再继续执行的解决方法
- 子线程更新UI会发生android.view.ViewRoot$CalledFromWrongThreadException异常的解决方法
- 子线程更新UI会发生android.view.ViewRoot$CalledFromWrongThreadException异常的解决方法
- c#等待所有子线程执行完毕方法
- 解决C#中一个"异步方法却同步执行"的问题
- 关于水晶报表列太多导致设计界面容纳不下的解决方法