不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
使用Invoke解决多线程间的控件访问出错
编辑:dnawo 日期:2009-02-20
在一个WinForm界面上有一个按钮(button1)和一个文本框(textBox1),在button1的点击事件处理程序中创建一个新的线程,并期望在新线程中更改textBox1的值,代码如下:
运行程序点击按钮后出错,提示:线程间操作无效: 从不是创建控件“textBox1”的线程访问它。下边我们用Invoke解决这一问题:
更新成功!
复制内容到剪贴板
程序代码

/// <summary>
/// 按钮点击事件处理程序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
//创建新线程
Thread processorThread = null;
processorThread = new Thread(new ThreadStart(Done));
processorThread.IsBackground = true;
processorThread.SetApartmentState(ApartmentState.STA);
processorThread.Start();
}
/// <summary>
/// 更新textBox1值
/// </summary>
private void Done()
{
textBox1.Text = "www.mzwu.com";
}
/// 按钮点击事件处理程序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
//创建新线程
Thread processorThread = null;
processorThread = new Thread(new ThreadStart(Done));
processorThread.IsBackground = true;
processorThread.SetApartmentState(ApartmentState.STA);
processorThread.Start();
}
/// <summary>
/// 更新textBox1值
/// </summary>
private void Done()
{
textBox1.Text = "www.mzwu.com";
}
运行程序点击按钮后出错,提示:线程间操作无效: 从不是创建控件“textBox1”的线程访问它。下边我们用Invoke解决这一问题:
复制内容到剪贴板
程序代码

/// <summary>
/// 按钮点击事件处理程序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
//创建新线程
Thread processorThread = null;
processorThread = new Thread(new ThreadStart(Done));
processorThread.IsBackground = true;
processorThread.SetApartmentState(ApartmentState.STA);
processorThread.Start();
}
delegate void WriteInvoke(string msg);
private void Write(string msg)
{
textBox1.Text = msg;
}
/// <summary>
/// 更新textBox1值
/// </summary>
private void Done()
{
this.Invoke(new WriteInvoke(Write), new object[] { "www.mzwu.com" });
}
/// 按钮点击事件处理程序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
//创建新线程
Thread processorThread = null;
processorThread = new Thread(new ThreadStart(Done));
processorThread.IsBackground = true;
processorThread.SetApartmentState(ApartmentState.STA);
processorThread.Start();
}
delegate void WriteInvoke(string msg);
private void Write(string msg)
{
textBox1.Text = msg;
}
/// <summary>
/// 更新textBox1值
/// </summary>
private void Done()
{
this.Invoke(new WriteInvoke(Write), new object[] { "www.mzwu.com" });
}
更新成功!
评论: 0 | 引用: 0 | 查看次数: 4724
发表评论
请登录后再发表评论!