线程间操作无效: 从不是创建控件“textBox1”的线程访问它。这个应该怎么做啊?
我是多线程操作,当有数据产生的时候,要对textBox1的text进行增加,怎么办?
我是多线程操作,当有数据产生的时候,要对textBox1的text进行增加,怎么办?
解决方案 »
- 32位系统中生成的vs2010软件无法在64位中打开
- 怎么能把gridview的数据导出到excel
- 使用C#调用access数据库,怎么生成本地静态html页面?
- C#panel透明窗体最小化恢复后透明成黑色问题
- 五彩色连珠游戏,帮提建议.
- C#中查询数据库的图片怎么转为和在数据库中查询的图片一样。
- 怎么把外部EXE封装进我的EXE中
- 急问:C#中怎样隐藏应用程序窗体(在线等!)
- 多表更新的问题,用select多表查询返回一个dataset里,修改之,如何更新到数据库的多个表呢,有何好办法?
- 这是不是安装的问题?
- NET 为啥没 JAVA 遭人爱
- 在循环获取数据库中的数据,如何让dataGridView1有一条数据就显示一条
/// <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";
}运行程序点击按钮后出错,提示:线程间操作无效: 从不是创建控件“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[] { "sms.wensima.cn" });
}更新成功!