问题标签 [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.

0 投票
4 回答
880 浏览

multithreading - 使用 BackgroundWorker 进行线程化

我有一个场景。我在 Windows 窗体上显示了一个用户 ID 列表。一旦我单击其中一个用户 ID,我就会从数据库中获取用户详细信息。为了保持应用程序的响应能力,在列表框的选择更改事件中,我创建了新的 BackgroundWorker(BW) 对象并点击了数据库。我在状态栏中显示“正在搜索用户 'abc'...”。

现在,如果用户使用箭头键(4-5 次)在用户 ID 之间移动,通过上述设计,我创建了多个 BW 对象来发出请求。但最后,当特定用户的数据返回时(可能不是当前在列表视图中选择用户的用户),因为它是异步调用,我仍然最终在状态栏中显示所有用户。

我想做的是,我只想去获取最后一个用户的详细信息。到那时我只想显示“正在搜索用户...”。

请让我知道解决方案...

0 投票
3 回答
2584 浏览

c# - 后台工作人员有限制吗?技术或常识

在 Program.cs 中,我有以下方法正在检查以及将 5 个 SQL 数据库与中央服务器同步。每一个都是相互独立的,所以我想通过让它们同时运行来加快我的程序的加载时间。

不幸的是,一次工作非常不稳定,下一次就不行了。本地数据库是 SQLExpress 2005,中央数据库是 SQL Server Standard 2005。

其中任何一个可以有多少个连接有限制吗?后台工作者怎么样,我一次只能运行这么多吗?我确信有一种更雄辩的方式来做到这一点,我很想听听(看到)他们。

这就是我在 Program.cs 的 Main() 中调用它的方式 -->

if(IsSqlAvailable()) SyncNow();


0 投票
7 回答
23200 浏览

c# - 接受多个参数的 BackgroundWorker 的替代方案?

BackgroundWorker 对象允许我们将单个参数传递给 DoWorkEventHandler。

要传递多个参数,我必须将它们包装在一个对象中,比如这个糟糕的字符串数组:

是否有另一个对象或模式允许我们很好地传递多个参数,或者理想情况下,编写我们自己的签名?

0 投票
1 回答
904 浏览

c# - 帮助更新图表

我有两种方法可以一起工作,它们制作了一个大的双数组(每 1/1000000S 5000 个项目),这个数组应该显示一个图表(Dundas 图表)。但是图表没有更新。

请帮我!

对不起,我的英语不好!

这是我的代码:

0 投票
2 回答
4447 浏览

entity-framework - 异步 ObjectContext.SaveChanges()?

我希望(Win 应用程序)SaveChangesObjectContext异步保存更改,在用户能够继续工作时为用户显示一个选取框(或可控?)进度条(我可以轻松实现)。

我基本上想覆盖SaveChanges.ObjectContext

有没有人考虑过这个?

0 投票
1 回答
1582 浏览

c# - 在 Windows 上实现线程安全的 FTP 文件获取守护进程

我开始实现一个简单的守护进程,它基本上在 BackgroundWorker 组件的帮助下从 FTP 位置获取文件,以保证那里的线程安全。虽然我觉得我在朝着正确的方向前进,但我对所涉及的技术并不完全熟悉,因此对整个应用程序生命周期不太放心,比如说我肯定不知道如何处理的场景然而,即如何处理停止事件,如果服务在工作人员运行时停止会发生什么,等等。我猜下面的代码几乎不能代表我想要实现的目标:

任何和每一个建议将不胜感激。非常感谢您的帮助。

编辑:刚刚重新实现了 FTP 文件获取。

0 投票
3 回答
7143 浏览

c# - 用于串口数据处理的线程抛出“这个BackgroundWorker当前很忙,不能同时运行多个任务”

我正在用 C# 开发一个应用程序,它从串行端口获取数据,处理它并将其显示给 UI。数据在 5-50 毫秒之间的速度非常快。在我没有使用任何线程之前。因此应用程序依赖于单个应用程序线程,该线程从串行端口获取数据,处理数据并将其显示给 UI。它正在丢失一些数据。然后我开始实现 BackgroundWorker 线程以消除单线程上的一些开销并考虑良好的性能。现在我得到“这个BackgroundWorker目前很忙,不能同时运行多个任务“错误。我认为线程无法应对来自串行端口的数据的速度。因此在执行“backgroundWorker1.RunWorkerAsync(data);”时抛出错误。我需要一些建议来实现这种更好的方法场景?

0 投票
2 回答
1225 浏览

wpf - wpf 线程、后台工作者、调度程序

我是 wpf 线程的新手,现在我们有了 backgroundworker 和 dispatcher 类,经典的 winforms 线程问题不再是问题了吗?

0 投票
3 回答
1911 浏览

multithreading - 创建 BackgroundWorkers 的线程似乎将 Completed 事件排队

我注意到 BackgroundWorkers 的一些奇怪行为以及它们正在触发的事件,其中事件似乎在一个线程中排队,而实际上并未使用 CPU。

基本上系统的设计是,基于用户交互,创建一个线程来发送 Web 请求以获取一些数据。根据结果​​,它可能会触发许多其他异步请求,对每个请求使用 BackgroundWorkers。我这样做是因为管理请求的代码使用锁来确保一次只发送一个请求(以避免向服务器发送多个同时请求的垃圾邮件,可能导致服务器忽略/阻止它们)。可能有更好的设计,我很想听听(我对 C#/Windows 窗体编程比较陌生,可以使用这些建议)。但是,无论设计更改如何,我都有兴趣了解导致我所看到的行为的原因。

我编写了一个相对简单的测试应用程序来演示这个问题。它基本上只是一个带有按钮和文本框的表单来显示结果(您可能可以不使用表单并在控制台上显示结果,但我这样做是为了复制我的实际应用程序所做的事情)。这是代码:

这是我回来的结果:

如您所见,在显示第一条“开始”消息后有 13 秒的延迟,之后它会处理大约 15 条消息(尽管大多数消息被触发之间有 2 秒的延迟)。

有谁知道发生了什么?

0 投票
2 回答
1561 浏览

c# - 如何从后台工作线程更改 XAML 元素?

在下面的代码示例中,我想从我的 BackgroundThread更改TextBox 的前景文本的颜色,但它得到了错误

此线程无法访问此对象,因为它位于另一个线程中。

我必须在下面的代码中进行哪些更改,以便后台工作线程可以更改 TextBox 中的前景色?

回答:

谢谢安迪,这只是一个小小的疏忽,为了后代,这里是更正的代码: