博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# winform程序防止前台卡死
阅读量:7243 次
发布时间:2019-06-29

本文共 792 字,大约阅读时间需要 2 分钟。

https://blog.csdn.net/Emiedon/article/details/51069193

在实际开发中,如果需要实时的显示后台处理的情况,我们可能要在前台用一些控件去显示

所以我们可能会写诸如label1.text=...,button1.hide();等等这样的代码,但是我们会发现并不会立刻显示,作为一只菜鸟,我不清楚是怎么回事,但是我找到了一个解决办法

 

Application.DoEvents()

 

这个命令可以立即刷新前台,所以可以在程序代码里的适当位置添加,可以模拟出同步的感觉,但是因为这个过程比较耗时,所以会给计算性能带来一些影响,还是慎重使用吧

 

https://bbs.csdn.net/topics/380001753

Application.DoEvents();

这个是继续执行主线程操作

/// <param name="i">时间 单位:秒</param>
        
private 
void 
dealTimer(
int 
i)
        
{
            
DateTime dt1 = DateTime.Now; 
// 获取当前时间
            
DateTime dt2;
            
int 
diff = 0;
 
            
while 
(diff < i)
            
{
                
dt2 = DateTime.Now;
                
TimeSpan ts = dt2.Subtract(dt1);
                
diff = (
int
)ts.TotalSeconds;
                
Application.DoEvents();
            
}
        
}
 
我自己写的
 if (cts.Token.IsCancellationRequested)
                    {
                        Console.WriteLine("线程被终止!");
                        break;
                    }
                    Application.DoEvents();

转载于:https://www.cnblogs.com/LuoEast/p/9112687.html

你可能感兴趣的文章
Exponent CMS 2.2.0 Beta3 发布
查看>>
lisk之初发布
查看>>
linux shell 2-----常用命令
查看>>
对象模式追MM与Java的23种设计模式
查看>>
ERP程序的公共代码中出现的问题 过度封装不方便维护
查看>>
定义数据类型SQL server中SET ANSI_PADDING对char、varchar、nvarchar的影响
查看>>
Console-算法[运算符]-学习使用按位或 |
查看>>
深入学习MVC
查看>>
如何统一设置所有WebPart的标题栏的背景颜色
查看>>
Flex与.NET互操作(二):基于WebService的数据访问(上)
查看>>
utf-8编码的mysql数据库 按照 中文来对 名称进行排序
查看>>
smarty if 操作符
查看>>
python 自定义异常
查看>>
nullnullAS 数组
查看>>
linux命令综合
查看>>
Xcode 调试技巧
查看>>
Clojure常用模块
查看>>
会计基础第二次模拟试题(1)
查看>>
C#线程间同步无法关闭
查看>>
Win7与Ubuntu双系统安装过程
查看>>