我已经检查了系统
public void ProcesssMessages(ResponseEventArgs message)
{
_queue.Enqueue(message);
if (!backgroundWorker1.IsBusy)
{
backgroundWorker1.RunWorkerAsync();
}
}
仍然它给了我错误backgroundworker1已经在运行,你不能运行它两次。这是我的屏幕中唯一一个运行后台工作程序的点,所以在此期间没有人可以从其他部分运行它。
是否有某种方法可以使其安全或防止失败。
我没有处理完成的事件,因此我无法阻止该事件。 我无法在已完成的事件中运行它,因为这是在用户控件中,有人访问此用户控件中的方法,我将该消息添加到队列中。然后我需要使用后台工作程序处理该消息,但首先需要检查后台工作程序是否已经在处理队列。后台工作者的代码是
void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while (_queue.Count > 0)
{
ResponseEventArgs currentMessage = _queue.Dequeue();
if (currentMessage != null)
{
AddUpdateDataRow(currentMessage);
UpdateMainUI();
}
}
}
UpdateMainUI方法的代码
private void UpdateMainUI()
{
if (gridControl1.InvokeRequired)
{
gridControl1.Invoke(new MethodInvoker(UpdateMainUI));
}
gridControl1.RefreshDataSource();
}
由于