方式一:
public partial class Form1 : Form { private delegate void FlushClient();//代理 public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Thread thread = new Thread(CrossThreadFlush); thread.IsBackground = true; thread.Start(); }
private void CrossThreadFlush() { while (true) { //將sleep和無限循環(huán)放在等待異步的外面 Thread.Sleep(1000); ThreadFunction(); } } private void ThreadFunction() { if (this.textBox1.InvokeRequired)//等待異步 { FlushClient fc = new FlushClient(ThreadFunction); this.Invoke(fc);//通過代理調(diào)用刷新方法 } else { this.textBox1.Text = DateTime.Now.ToString(); } } } 此方法2.0及以上 方法二: private void ControlThread() { MethodInvoker TextBox1Show = new MethodInvoker(myControl); BeginInvoke(TextBox1Show); } private void myControl() { textBox1.Text = "kdkkdkk2"; } 方法三:
this.Invoke((EventHandler)(delegate {}));
|