一、现象:

我在主窗体新建线程,使用子线程来处理接收到的数据,并且更新窗体显示内容,但关闭主窗体程序之后就程序就报错,如下所示:

二、分析问题:

由于新建线程的处理函数里边是一直死循环处理数据,虽然窗体程序form关闭了,但后台新建的线程还在运行,新建的线程会通过this.Invoke来更新UI主窗体线程,所以程序会报错。

private void PdoProcess()
{
//CanOpenDevice.visible
while (true)
{
GloableVar.pdocount++;
if (GloableVar.pdocount > 1000)
GloableVar.pdocount = 0;
ShowPdo(GloableVar.pdocount);
Thread.Sleep(100);
}
}

为了在关闭form主窗体程序时可以把子线程去更新UI主窗体的线程也关闭,通过使用try catch来解决这个问题。

private void ShowPdo(int data)
{
try
{
if (this.InvokeRequired)
{
pdo pdodate = new pdo(ShowPdo);
this.Invoke(pdodate, new object[] { data });
}
else
{
textBox1.Text = data.ToString();
}
}
catch(Exception ex)
{ } }

catch将捕获任何发生的异常,程序一直在try里边运行,除非try里边的代码运行发生异常才到catch里边运行。如上程序所示,在主窗体程序关闭后,子线程通过this.Invoke要去更新UI主窗体程序,这时catch就会检测到异常,程序就不会进入try,而进入catch而不会发生去更新UI主窗体程序的报错的问题。

三、参考文档

https://www.lanhusoft.com/Article/113.html

http://www.cnblogs.com/shuaijie/articles/3478750.html

by 羊羊得亿

2017-08-12 ShenZhen

最新文章

  1. dubbox微服务实例及引发的“血案”
  2. tomcat accesslog日志扩展
  3. Balanced Binary Tree [LeetCode]
  4. javascripts学习笔记(五):用js来实现缩略语列表、文献来源链接和快捷键列表。
  5. Win7另存文件没有桌面的解决方法
  6. JavaMail入门第四篇 接收邮件
  7. It is indirectly referenced from required .class files
  8. java scoket (UDP通信模型)简易聊天室
  9. YUI Array 之 indexOf(索引值|搜索)
  10. hdu 4628 Pieces 状压dp
  11. Date、DateTime值的格式化扩展函数
  12. JS 实现图片直接下载
  13. pig的一些实例(我常用的语法)
  14. Scanner的使用 猜数字 +猜电影
  15. LeetCode - Merge Two Binary Trees
  16. node爬虫(转)
  17. pg数据库杀掉连接
  18. Linux 多线程编程—使用条件变量实现循环打印
  19. Jmeter-Maven-Plugin高级应用:Configuring the jvm that the jmeter process runs in
  20. 28.OGNL与ValueStack(VS)-总结$ # %的区别

热门文章

  1. leetcode第一刷_Text Justification
  2. Dom4j 查找节点或属性
  3. sqlserver自定义函数(标量值函数,表值函数)
  4. Linux常用图片查看处理软件
  5. js sort()函数 排序问题 var arr =['A-1-5-1','A-1-10-2','A-1-5-5','B-2-3-1','C-4-10-1'], 对这个数组进行排序,想达到的效果是["A-1-5-1", "A-1-5-5", "A-4-10-1", "A-1-10-2", "A-2-3-1"]
  6. jquery点击弹框外层关闭弹框
  7. Swift学习笔记(9)--闭包
  8. CSUOJ 1603 Scheduling the final examination
  9. hiho week 37 P1 : 二分·二分查找之k小数
  10. Maintaining processor resources during architectural events