C# 如何在另一个标签中显示每个线程?
在button1 click事件中,我创建了许多backgroundworkers,这取决于我在列表框中选择了多少项:C# 如何在另一个标签中显示每个线程?,c#,winforms,backgroundworker,C#,Winforms,Backgroundworker,在button1 click事件中,我创建了许多backgroundworkers,这取决于我在列表框中选择了多少项: private void button1_Click(object sender, EventArgs e) { // For each item selected in the listbox foreach (var item in listBox1.SelectedItems) { B
private void button1_Click(object sender, EventArgs e)
{
// For each item selected in the listbox
foreach (var item in listBox1.SelectedItems)
{
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += backgroundWorker1_DoWork;
worker.RunWorkerCompleted += backgroundWorker1_RunWorkerCompleted;
object argument = item;
worker.RunWorkerAsync(argument);
}
offlineOnline = false;
init();
button1.Enabled = false;
this.Text = "Processing...";
label6.Text = "Processing...";
label6.Visible = true;
button2.Enabled = false;
checkBox1.Enabled = false;
checkBox2.Enabled = false;
numericUpDown1.Enabled = false;
button3.Enabled = true;
button6.Enabled = false;
button4.Enabled = true;
button5.Enabled = false;
listBox1.Enabled = false;
}
}
然后在DoWork事件中,我使用如下线程:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
object input = e.Argument;
string f = GetUrl(input);
this.Invoke(new MethodInvoker(delegate { label2.Text = "Website To Crawl: "; }));
this.Invoke(new MethodInvoker(delegate { label4.Text = f; }));
if (offlineOnline == true)
{
offlinecrawling(f, levelsToCrawl, e);
}
else
{
webCrawler(f, levelsToCrawl, e);
}
}
问题是,在label4.Text中,我将看到这两个线程的最后一个URL。例如,我想要两个不同的标签。每个线程将显示另一个线程。例如,在label4.Text中有www.cnn.com,在label7.Text中有www.cnet.com
我不知道如何捕获或获取每个线程URL并将其放入标签中?是的,首先我建议重命名您的控件-正如@Henk_Holterman建议的那样。 例如,您不仅可以将输入作为参数传递,还可以将具有要更新的输入+标签的某些类/对作为参数传递。
然后,更新您的代理以使用指定的标签。请首先为这些控件指定一个正确的名称。如何从
项
到参数
?Henk我刚刚更新了我的问题,我在button1 click事件中遗漏了一些代码。出于某种原因,我删除了所有这些混乱。。。