Backgroundworker在sub中间停止(不需要)

时间:2014-12-19 13:32:15

标签: vb.net multithreading backgroundworker

如果我碰巧看过我的情况答案,我会提前道歉。

我正在使用后台工作程序在后台执行一些代码。这是我第一次使用后台工作人员而且我得到了不一致的结果。

使用断点,我能够找到后台工作人员停止工作的位置。

该行是:

RDFValues(I) = New Dictionary(Of String, String)

如果我在主线程中运行它,该线路工作正常,但它似乎阻止了后台工作者的轨道。

我的问题是为什么这一行导致后台工作者停止,而不是主线程?

我怀疑它与线程竞赛有关,但我并不完全确定。我甚至在使用此行调用sub的代码块中添加了Synclock,因此我不知所措。

如果有人能帮助我,我将非常感激。 :)

我还应该注意,被调用的子元素存在于背景工作者工作之外的模块中。

1 个答案:

答案 0 :(得分:0)

对于任何读过这个和我一样多的菜鸟的人来说,这就是我为解决问题而采取的措施。我正在使用来自我的UI的bindingsources来填充一些变量(这就是为什么sub在主线程上运行时工作的原因)我最终不得不放弃使用BS并使用程序化方法。我创建了一个返回DataTable的函数,然后使用DataRow对象来过滤结果。这很有效,我的后台工作人员现在完成了它的任务而没有错误。 :)祝你们其他人新手好运! :)