c#软件设计中,如果有多个线程同时地频繁地操作UI主线程同一个控件时,比如显示状态等,往往会出现“未将对象引用设置到对象的实例”错误。
有时即使你使用try...catch...来捕获错误依然无济于事,比如最近的一个小开发应用。5个线程需要频繁的把状态写入到 RichTextBox 这个控件上,5个线程同时不停地写入数据,开始还好,但是运行一段时间后,就会出现“未将对象引用设置到对象的实例”错误,或者软件直接自动退出了。
这样的异常客户一定不满意。我猜测问题还是出现在多线程身上,即使加上了以下这句:
Control.CheckForIllegalCrossThreadCalls = false;
以便允许线程的不安全调用,.net内部还是会出现错误。
解决方法就是使用字符串 StringBuilder类(string也可以,但是效率不如StringBuilder),临时缓存要显示的数据,然后用一个定时器,定时写入到RichTextBox这个控件上,这样就避免了频繁的操作同一个控件。
StringBuilder tmpv = new StringBuilder();
tmpv.AppendLine("...");
定时器间隔可以设为5秒,每隔5秒把tmpv里的数据显示到RichTextBox即可。
private void timer1_Tick(object sender, EventArgs e)
{//定时器
try
{
richTextBox1.AppendText(tmpv.ToString());
tmpv.Length = 0; //清空StringBuilder
}
catch (Exception ){}
}
星球重启云游戏官方正版 安卓版v1.2.42
下载派对之星国际服 (flash party)安卓版v2.0.15.160832
下载Gym Fighting健身房格斗 安卓版v1.17.2
下载健身房格斗游戏无限金币 安卓版v1.18.2
下载幻兽爱合成小米版 最新版v2.5.6
幻兽爱合成小米版是一款非常好玩的宠物合成类游戏,游戏中有着海
修仙世家模拟器游戏 最新版v1.0.0
修仙世家模拟器是一款玩法新颖的模拟经营放置类挂机修仙游戏,游
国王或失败内购版 最新版v0.28.4
国王或失败内购版是一款非常好玩的模拟经营类手游,玩家在游戏中
飞影铠甲召唤器模拟器 最新版v1.0
飞影铠甲召唤器模拟器是一款可以模拟铠甲勇士变身音效和动作效果
幸福甜点咖啡店无限金币版 去广告版v1.2.2
幸福甜点咖啡店中文内购版是游戏的破解版本,在该版本中为玩家提