方法一:
成都地區(qū)優(yōu)秀IDC服務(wù)器托管提供商(創(chuàng)新互聯(lián)).為客戶提供專業(yè)的成都移動(dòng)機(jī)房,四川各地服務(wù)器托管,成都移動(dòng)機(jī)房、多線服務(wù)器托管.托管咨詢專線:18980820575
public Form1()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false;
}
方法二:
using System;
using System.Threading;
using System.Windows.Forms;
namespace TestingUIThread
{
public partial class Form1 : Form
{
Thread thread = null;
public Form1()
{
InitializeComponent();
}
private void btnEnable_Click(object sender, EventArgs e)
{
thread = new Thread(new ParameterizedThreadStart(EnableButton));
thread.Start(null);
}
private void EnableButton(object o)
{
EnableButton();
}
private delegate void EnableButtonCallBack();
private void EnableButton()
{
if (this.btnTest.InvokeRequired)
{
this.Invoke(new EnableButtonCallBack(EnableButton));
}
else
{
btnTest.Enabled = true;
btnTest.Text = "Enabled";
}
}
}
}
方法三: 通過ISynchronizeInvoke和MethodInvoker.
using System;
using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;
namespace TestingUIThread
{
public partial class Form1 : Form
{
Thread thread = null;
public Form1()
{
InitializeComponent();
}
private void btnEnable_Click(object sender, EventArgs e)
{
thread = new Thread(new ParameterizedThreadStart(MyEnableButton));
thread.Start(null);
}
private void MyEnableButton(object sender)
{
ISynchronizeInvoke synchronizer = this;
if (synchronizer.InvokeRequired)
{
MethodInvoker minvoker = new MethodInvoker(this.EnableButton);
synchronizer.Invoke(minvoker, null);
}
else
{
this.EnableButton();
}
}
private void EnableButton()
{
btnTest.Enabled = true;
btnTest.Text = "Enabled";
}
}
}