![](/img/trans.png)
[英]How to update a RichTextBox from BackgroundWorker using BeginInvoke
[英]RichTextBox to BackgroundWorker
如何在C#中將RichTextBox1
的值扔給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)
{
⋮
}
}
出於上述原因,您無法傳遞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)
{
}
}
通常,只有主UI線程才能與窗體和控件進行交互。
考慮將所需的所有數據傳遞給RunWorkerAsync
方法-也許是RunWorkerAsync(richTextBox1.Lines.ToList())
。
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 []等,取決於您傳遞的內容)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.