如果您对这篇小文感兴趣的话,或许您在编程中时候碰到过以下类似的异常提示:
1、线程间操作无效: 从不是创建控件“X”的线程访问它。(X是控件名称)
2、"在该控件上执行的操作正从错误的线程调用。使用 Control.Invoke 或 Control.BeginInvoke 封送到正确的线程才能执行此操作。"
看到这种提示,极有可能是跨线程访问控件造成的。举个小例子,
代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace WindowsFormsApplication6
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public delegate void MyMethod(); //声明一个委托,以使其它线程访问
//按钮
private void button1_Click(object sender, EventArgs e)
{
Thread aaa = new Thread(new ThreadStart(OpenDialogOnOtherThread));
aaa.Start();
}
//其它线程打开对话框
void OpenDialogOnOtherThread()
{
MyMethod OpenDialog = new MyMethod(this.OpenDialog);
this.Invoke(OpenDialog); //在当前线程,调用OpenDialog
}
//打开对话框
void OpenDialog()
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.ShowDialog();
}
}
}
在该控件上执行的操作正从错误的线程调用。使用 Control.Invoke 或 Control.BeginInvoke 封送到正确的线程才能执行此操作。(以解决)
最新推荐文章于 2024-02-02 13:04:09 发布