木子屋 Dnawo's BLOG

WinForm多线程编程及线程间控件赋值示例

👤 dnawo 📅 2013-08-30 👁 4463 👍 0 💬 0 🔄 来源:本站原创
若在线程中对TextBox控件赋值会出错,提示:

线程间操作无效: 从不是创建控件“textBox1”的线程访问它。

这时通过调用窗体的Invoke方法对TextBox控件进行赋值即可:

delegate void TodoInvoke(string msg);

private void Todo(string msg)
{
    textBox1.Text = msg;
}

private void btn1_Click(object sender, EventArgs e)
{
    Thread thread = new Thread(() =>
    {
        this.Invoke(new TodoInvoke(Todo), "mzwu.com");
    });
    thread.Start();
}

.NET Framework 3.5+无需单独声明委托,可用自带的委托Action:

private void btn1_Click(object sender, EventArgs e)
{
    Thread thread = new Thread(() =>
    {
        this.Invoke(new Action<string>(delegate (string msg) { textBox1.Text = msg; }), "mzwu.com");
    });
    thread.Start();
}

评论(0)

暂无评论。

验证码
评论需审核通过后显示
← 上一篇 Entity Framework开发模式之Code First示… 下一篇 → ASP.NET MVC3控制器传递匿名对象到视图解决方法