如果您對這篇小文感興趣的話,或許您在編程中時候碰到過以下類似的異常提示:
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();
}
}
}