问题标签 [backgroundworker]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C#/.NET:使用 NUnit 测试 BackgroundWorker
此测试在使用 NUnit 控制台运行程序运行时失败。如果我只用 TestDriven.NET 运行该测试,它就可以工作,但如果我用 TestDriven.NET 运行整个套件,它就不行:
我怀疑这个问题与没有消息循环有关,但我不确定。
使用 BackgroundWorker 有什么要求?
是否有解决方法可以使测试正常工作?
.net - WPF等待光标与BackgroundWorker线程
我想在 BackgroundWorker 进程在另一个线程中运行时显示沙漏光标并禁用窗口。
这就是我正在做的事情:
窗口像我想要的那样被禁用,但光标仍然是一个箭头。我怎样才能使它成为等待光标?
根据这个问题 ,它似乎适用于vg1890 : Disabling all but one control in a WPF window
.net - 我可以在让用户等待之前更新 WPF 状态栏文本吗?
我有一个带有状态栏的 WPF 应用程序。
当我做少量工作时,我想在那里显示文本并切换到沙漏等待光标。
此代码将更新光标,但状态栏文本不会更新...
更新
如果我这样做,它会起作用,但我对这个解决方案一点也不满意。有没有更简单的方法?
我宁愿它看起来像这样......
或者甚至更好...
更新
我还尝试将 TextBlock 绑定到公共属性并按照IanGilham 的建议实施INotifyPropertyChanged。这不起作用。
XAML:
视觉基础:
.net - 有没有简单的方法来设置 WPF 状态栏文本?
我想在我的程序执行一些工作时让用户稍等片刻之前在我的状态栏中设置 TextBlock 的文本。
显然,而不是像这样做一个很好的小功能(这不起作用):
我不得不改用这个怪物:
而 Load() 函数现在是一个 Sub!
必须有更好的方法来处理这种简单的情况。这不需要是异步的。
c# - 如何彻底“杀死”后台工作人员?
我正在编写一个重复运行一系列数字 IO 操作的 Windows 应用程序。
当用户单击“开始”按钮时,这一系列动作开始,并由 backgroundWorker1_DoWork() 中的后台工作人员完成。
但是,有时我会收到“此后台工作人员当前正忙.......”错误消息。
我正在考虑在代码中实现以下内容,方法是在开始另一个操作序列之前使用 while 循环“杀死”后台工作人员:
我想我主要担心的是, backgroundWorker1 最终会被“杀死”吗?如果会,完成它需要很长时间吗?
这种编码会让我陷入无限循环吗?
c# - BackgroundWorker OnWorkCompleted 抛出跨线程异常
我有一个用于数据库分页的简单 UserControl,它使用控制器来执行实际的 DAL 调用。我使用 aBackgroundWorker
来执行繁重的工作,并在OnWorkCompleted
事件中重新启用某些按钮、更改TextBox.Text
属性并为父表单引发事件。
表单 A 包含我的用户控件。当我单击打开表单 B 的某个按钮时,即使我没有在“那里”做任何事情并关闭它,并尝试从我的数据库中引入下一页,OnWorkCompleted
在工作线程(而不是我的主线程),并引发跨线程异常。
目前我InvokeRequired
在那里的处理程序处添加了一个检查,但不是OnWorkCompleted
要在主线程上调用整个点吗?为什么它不能按预期工作?
编辑:
我设法将问题缩小到 arcgis 和BackgroundWorker
. 我有以下解决方案,它向 arcmap 添加了一个命令,Form1
用两个按钮打开一个简单的命令。
第一个按钮运行BackgroundWorker
睡眠 500 毫秒并更新计数器。在RunWorkerCompleted
方法中它检查InvokeRequired
并更新标题以显示该方法最初是在主线程还是在工作线程中运行。第二个按钮刚刚打开Form2
,其中不包含任何内容。
起初,所有的调用RunWorkerCompletedare
都是在主线程内进行的(正如预期的那样——这就是 RunWorkerComplete 方法的全部要点,至少我从MSDN上了解到的BackgroundWorker
)
在打开和关闭之后Form2
,RunWorkerCompleted
总是在工作线程上被调用。我想补充一点,我可以让这个问题的解决方案保持原样(InvokeRequired
在RunWorkerCompleted
方法中检查),但我想了解为什么它会违背我的期望。在我的“真实”代码中,我想始终知道该RunWorkerCompleted
方法是在主线程上调用的。
我设法form.Show();
在我的命令中指出问题BackgroundTesterBtn
- 如果我ShowDialog()
改用,我没有问题(RunWorkerCompleted
总是在主线程上运行)。我确实需要Show()
在我的 ArcMap 项目中使用,这样用户就不会被绑定到表单。
我还尝试在普通的 WinForms 项目中重现该错误。我添加了一个简单的项目,它只打开没有 ArcMap 的第一个表单,但在那种情况下,我无法重现错误 - 在RunWorkerCompleted
主线程上运行,无论是我使用Show()
还是ShowDialog()
打开之前和之后Form2
。我尝试在 my 之前添加第三种形式作为主要形式Form1
,但它并没有改变结果。
这是我的简单 sln (VS2005sp1) - 它需要
ESRI.ArcGIS.ADF(9.2.4.1420)
ESRI.ArcGIS.ArcMapUI(9.2.3.1380)
ESRI.ArcGIS.SystemUI (9.2.3.1380)
c# - C# 在后台工作线程 DoWork() 中加入线程
在我的 DoWork() 函数中,我向我们的 sip 服务器注册。然后我必须等待回复。但是,我得到的响应是在另一个事件中收到的。但是,在我能够检查 DoWork() 中的标志之前,DoWork() 已经准备就绪,并且响应随之而来。
我试图找到一种方法来等待 DoWork() 直到我在诊断事件中得到响应。我有一个在该事件中设置的全局标志,我必须检查 DoWork()。
感谢您的任何建议,
performance - 仅在 I/O 负载低时运行线程
我有一个执行 I/O 操作的后台线程(使索引保持最新)。但除此之外,还有几个客户端访问服务器的硬盘,我希望这些访问尽可能快。所以我想,如果索引线程仅在 I/O 负载较低时运行,那就太好了。
有没有办法解决这个问题?
我也愿意接受其他建议。
python - GAE中的后台进程
我正在使用 Google App Engine 和 Django 1.0 (app-engine-patch) 开发一个网站
我的程序的主要部分必须在后台运行并更改本地数据并发布到远程 URL
有人可以提出一种有效的方法吗?
c# - 为 BackgroundWorker 设计一个接口
在我的 Windows 窗体应用程序中,我有一个扩展后台工作程序的类,我们在我的窗体类中将其称为 ExtendedBGW1.cs,我将其声明为成员变量,因此我对整个类具有如下作用域:
稍后在表单构造函数中我这样做
我的 InitializeBackgroundWoker() 方法看起来像这样
现在是我的设计问题。我现在知道我将拥有更多不同的类,比如我的扩展 BackGroundWorker 的扩展 BGW1.cs,所以我想如果我创建一个 IExtenedBackGroundWorker,我可以做这样的事情。
并且仍然具有 Main 类的适当范围。然后我可以创建以后需要的任何 IExtendedBackGroundWorker 实现。
我可以毫无问题地为方法和属性创建接口,但是当我尝试在接口、基类和主类之间正确连接事件时,我真的遇到了问题。
有没有人有任何想法?
这是我在 Main 中遇到的错误
这是我在实现界面时遇到的错误
这是我的界面现在的样子: