我试图让后台工作人员以最基本的方式使用 Windows 窗体运行,例如让后台进程更改标签中的文本。我在这里得到了基本的后台工作人员代码。http://www.albahari .com/threading/part3.aspx Heres the code in my form.. 试图让它按下一个按钮,然后生成后台工作线程,这会更改标签中的文本
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 WindowsFormsApplication4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
BackgroundWorker _bw = new BackgroundWorker();
void backgroundio()
{
_bw.DoWork += bw_DoWork;
_bw.RunWorkerAsync("Message to worker");
}
void bw_DoWork(object sender, DoWorkEventArgs e)
{
// This is called on the worker thread
label1.Text = (string)(e.Argument); // writes "Message to worker"
// Perform time-consuming task...
}
void button1_Click(object sender, EventArgs e)
{
backgroundio();
}
}
}
对于 label1.Text = (string)(e.Argument); 我得到这个错误。
跨线程操作无效:控件“label1”从创建它的线程以外的线程访问。
感谢您的帮助!:)
实际上,当我在这里时,有人可以解释一下这条线吗?
_bw.DoWork += bw_DoWork;
我不明白 += 在这种情况下有什么意义。你怎么能添加这些东西?