C# 使用BackgroundWorker时无过载
当我尝试向地图添加大量图形时,我遇到了ContextSwitchDeadlock。我很想使用BackgroundWorker类,尤其是因为我从来没有机会,但我不知道在这种情况下如何使用 C#: 我知道这个逻辑是错误的,但我不知道如何解决它。我已经参考了有关如何使用该类的帮助,但是提供的信息不是针对这种特定情况的。 我想做的是: 当用户单击搜索按钮时,它将运行查询。这很好用。问题是当它运行GeneralQueryTask_ExecuteCompleted时,如果有大量记录,我会收到一条ContextSwitchDeadlock消息。这也会使UI没有响应 根据我所读到的,我需要指出:C# 使用BackgroundWorker时无过载,c#,wpf,multithreading,backgroundworker,C#,Wpf,Multithreading,Backgroundworker,当我尝试向地图添加大量图形时,我遇到了ContextSwitchDeadlock。我很想使用BackgroundWorker类,尤其是因为我从来没有机会,但我不知道在这种情况下如何使用 C#: 我知道这个逻辑是错误的,但我不知道如何解决它。我已经参考了有关如何使用该类的帮助,但是提供的信息不是针对这种特定情况的。 我想做的是: 当用户单击搜索按钮时,它将运行查询。这很好用。问题是当它运行GeneralQueryTask_ExecuteCompleted时,如果有大量记录,我会收到一条Contex
if (worker.CancellationPending == true)
{
e.Cancel = true;
break;
}
执行耗时任务的位置。问题是我没有重载的方法来执行QueryTask和BackgroundWorker。任何帮助都将不胜感激。如果您需要更多信息,请让我知道。我很惊讶它竟然超过了QueryDataGrid.Visibility=Visibility.Visible;您无法从后台线程访问UI元素。如果您的
完成
事件也需要很长时间,为什么不将其放入do\u work
中呢?您也可以从do\u work
调用UI。问题在于已完成的事件。查询运行正常。。我需要完成的foreach循环是一项后台工作任务。我非常确定整个过程都需要返工。。恐怕根本不可能使用BackgroundWorker。您完成的事件就是dowork事件。您的事件名称令人困惑,您的代码显示:bw.DoWork+=new DoWorkEventHandler(GeneralQueryTask\u ExecuteCompleted)代码>所以DoWork是您的执行完成。。。
if (worker.CancellationPending == true)
{
e.Cancel = true;
break;
}