我已在系统中进行检查
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();
}
谢谢