如何将RichTextBox1的值赋给C#中的BackgroundWorker?
public void button4_Click(object sender, EventArgs e)
{
if (String.IsNullOrEmpty(richTextBox1.Text.Trim())){
MessageBox.Show("No value in RichTextBox?");
return;
}
if (backgroundWorker1.IsBusy != true)
{
// Start the asynchronous operation.
backgroundWorker1.RunWorkerAsync(richTextBox1);
}下面是我的BackgroundWorker的代码:
public void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
foreach (string vr in richTextBox1.Lines)
{
⋮
}
}发布于 2012-12-24 14:00:33
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync(richTextBox1.Text);
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
string text = (string)e.Argument;
MessageBox.Show(text);
}文本将作为对象e.argument发送。要检索它,请将e.argument转换回字符串(或string[]等,具体取决于您传递的内容)
发布于 2012-12-24 14:20:55
由于上面给出的原因,您不能传递RichTextBox,但是您可以传入字符串数组,它是RichTextBox.Lines属性并遍历它。
private void button1_Click(object sender, EventArgs e)
{
bg.RunWorkerAsync(richTextBox1.Lines);
}
void bg_DoWork(object sender, DoWorkEventArgs e)
{
string[] lines = (string[])e.Argument;
foreach(string vr in lines)
{
}
}发布于 2012-12-24 10:56:39
通常只有主UI线程可以与窗体和控件交互。
考虑将所需的所有数据传递给RunWorkerAsync方法--可能是RunWorkerAsync(richTextBox1.Lines.ToList())。
https://stackoverflow.com/questions/14016536
复制相似问题