1.出现的问题点:
跨线程操作时,从新建的线程去操作UI线程中的控件时,会报错;System . Invalid Operation Exception:“线程间操作无效: 从不是创建控件的线程访问它
2.出现问题的原因
通过查阅资料得知,正常情况下.NET平台为防止出错,不允许其他线程跨线程直接操作UI线程中的控件;
3.解决方法
有两种,第一种:在程序加载时直接修改为允许跨线程操作(相当于屏蔽系统跨线程检查,以免报错);但是这不是标准的方法。
第二种:定义一个委托(delegate),委托(delegate)可以将参数与方法传递给控件所在的线程,并由控件所在的线程执行,通过Invoke来调用,这样可以完美解决此类问题。
第一种方法如下图
public partial class Form1 : Form
{
//static string s7smartip;
Image image;
Image image2;
System.Timers.Timer timer10;
public Form1()
{
InitializeComponent();
Control.CheckForIllegalCrossThreadCalls = false;//加载时取消跨线程检查
第二种方法如下图