Я использую фоновый рабочий в winforms.В backgroundworker_progresschanged
событие e.userstate
- это элемент, который нужно добавить в listbox
.В то же время я хочу показать e.userstate
во всплывающем окне.
Вот мой код:
В backgroundworker_progresschanged
событие setlable()
это метод, который от другогокласс.
public void SetLable(string pbValue)
{
try
{
label1.Text = pbValue;
}
catch (Exception ex)
{ }
label1.ForeColor = Color.Red;
}
Я хочу добавить userstate
в listbox2
и в то же время хочу показать это во всплывающем окне, которое я создал в другой форме.Я закомментировал listbox.items.add
, потому что оба не работают одновременно.
private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
{
List<string> result1 = new List<string>();
var found = obj.getFiles();
foreach (var item in found)
{
if (item.Contains("ERROR"))
{
result1.Add(item);
(sender as BackgroundWorker).ReportProgress(0, item);
}
else
(sender as BackgroundWorker).ReportProgress(0);
System.Threading.Thread.Sleep(500);
}
e.Result = result1;
}
private void backgroundWorker2_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
if (e.UserState != null)
pop.SetLable(e.UserState.ToString());
// listBox2.Items.Add(e.UserState);
}
Я хочу, чтобы оба работали одновременно.
pop.SetLable(e.UserState.ToString());
// listBox2.Items.Add(e.UserState);
Возможно ли это?