1、错误的代码是:
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;
namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private string blog = " http://www.chenjiliang.com/ " ;
private void Form1_Load( object sender, EventArgs e)
{
new System.Threading.Thread(ShowTime).Start();
}
private void ShowTime()
{
textBox1.Text = DateTime.Now.ToString();
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private string blog = " http://www.chenjiliang.com/ " ;
private void Form1_Load( object sender, EventArgs e)
{
new System.Threading.Thread(ShowTime).Start();
}
private void ShowTime()
{
textBox1.Text = DateTime.Now.ToString();
}
}
}
会看到Cross-thread operation not valid: Control 'textBox1' accessed from a thread other than the thread it was created on.的错误
2、增加一个Public static 类
using
System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication5
{
public static class ControlExtention
{
public delegate void InvokeHandler();
public static void SafeInvoke( this Control control, InvokeHandler handler)
{
if (control.InvokeRequired)
{
control.Invoke(handler);
}
else
{
handler();
}
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication5
{
public static class ControlExtention
{
public delegate void InvokeHandler();
public static void SafeInvoke( this Control control, InvokeHandler handler)
{
if (control.InvokeRequired)
{
control.Invoke(handler);
}
else
{
handler();
}
}
}
}
3、build
4、这样写就好啦
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;
namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private string s = " http://www.chenjiliang.com/ " ;
private void Form1_Load( object sender, EventArgs e)
{
new System.Threading.Thread(ShowTime).Start();
}
private void ShowTime()
{
this .SafeInvoke(() =>
{
textBox1.Text = DateTime.Now.ToString();
});
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private string s = " http://www.chenjiliang.com/ " ;
private void Form1_Load( object sender, EventArgs e)
{
new System.Threading.Thread(ShowTime).Start();
}
private void ShowTime()
{
this .SafeInvoke(() =>
{
textBox1.Text = DateTime.Now.ToString();
});
}
}
}