问题标签 [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 投票
6 回答
36952 浏览

c# - 后台工作人员不会报告进度

我有一个后台工作人员运行一个长的数据库任务。我想在任务运行时显示进度条。不知何故,后台工作人员不会报告任务的进度。

这就是我所拥有的:

我在 WPF 中这样做,但我想它不会有所作为。

提前致谢

0 投票
3 回答
40645 浏览

c# - C# 后台工作人员在 DoWork 中设置 e.Result 并在 WorkCompleted 中获取价值

C# 2008 SP1

我正在使用后台工作人员

如果其中一个条件失败,我会将 e.cancel 设置为 true,并将字符串分配给 e.result。一切都在那里工作。

但是,当 workCompleted 触发时,我测试 e.Result 并得到一个异常“e.result 抛出 systeminvalidoperation 类型的异常”。

我想我可以使用全局变量在 DoWork 中设置并在完成的工作中进行比较。但这可能不是线程安全的。

谁能告诉我为什么我用 e.Result 得到这个,我该如何解决这个问题?

非常感谢,

0 投票
2 回答
2721 浏览

c# - 在 C# 中使用 BackgroundWorker 形成不透明动画

在 BackgroundWorker 的帮助下,我为某种形式创建了不透明动画。

这种方法只有一个小问题,但我不明白问题出在哪里。动画速度是可配置的,即使速度值非常高,有时动画非常非常慢,出于某种奇怪的原因......

我说的“慢动画”不是卡顿,动画其实很流畅,只是需要更多的时间来执行整个动画(从 0% 到 100%,反之亦然)。这只会不时发生。似乎(不确定)它发生在计算机正在执行其他一些有些密集的后台操作时。

我当然需要解决这个问题,但我也想知道你是否会改进这段代码,或者你是否会以不同的方式和/或更好的方式来做。

这是我的代码:

0 投票
11 回答
17563 浏览

.net - 如何取消长时间运行的数据库操作?

目前正在与 Oracle 合作,但也需要 MS SQL 的解决方案。

我有一个 GUI,允许用户生成将在数据库上执行的 SQL。这可能需要很长时间,具体取决于它们生成的搜索。我希望 GUI/App 在此搜索期间做出响应,并且我希望用户能够取消搜索。

我正在使用后台工作线程。

我的问题是,当用户取消搜索时,我无法中断对数据库的调用。它一直等到完成,然后它可以轮询“CancelationPending”属性。这不仅会浪费数据库上的资源,还会给我的代码带来问题。

如果用户在很长的查询上点击“搜索”,然后点击“取消”,然后再次点击“搜索”——第一次搜索仍在数据库中进行。当他们再次点击搜索时,后台工作人员仍然很忙。我对这个问题的唯一解决方案是创建一个新的后台工作人员。

这似乎是一种非常丑陋的做事方式。数据库继续工作我正在创建后台工作人员的新实例....当我真的想停止数据库调用并重新使用同一个工作人员时。

我怎样才能做到这一点?

0 投票
5 回答
4283 浏览

ruby-on-rails - Amazon SQS 是这里的正确选择吗?Rails 性能问题

我即将发布一个具有常见网络功能(消息、墙等)的 Rails 应用程序。我想使用某种后台处理(很可能是 Bj)从请求/响应周期中卸载任务。

当用户通过电子邮件邀请朋友加入并获得电子邮件通知时,就会发生这种情况。

我不确定我是否应该使用模型将这些邀请和通知放入我的数据库中,然后每 x 分钟使用一个工作进程处理它,或者我是否应该使用 Amazon SQS,将消息和邀请存储在那里并让我的工作人员从 Amazon SQS 检索它进行处理(发送邀请/通知)。

亚马逊的方法会从我的数据库中卸载,但我想从那里检索消息会更慢。

你怎么看?

0 投票
3 回答
1141 浏览

ruby - 与框架无关的 Ruby 后台工作程序库的最佳选择是什么?

我正在使用 Ruby 和 Sinatra 为 iPhone 应用程序构建一个简单的食谱搜索引擎,并将 RabbitMQ 用于我的消息队列。我环顾四周,为后台进程找到了许多不同的实现选择,但其中大多数要么实现自定义消息队列算法,要么作为 Rails 插件运行。

就可以与 RabbitMQ 很好地配合使用的与框架无关的高质量工作库而言,有哪些内容?

在编写工作代码时,是否有任何我应该牢记的最佳实践,除了显而易见的:

0 投票
8 回答
65913 浏览

c# - 如何让 BackgroundWorker 返回一个对象

我需要RunWorkerAsync()返回一个List<FileInfo>.

能够从后台工作人员返回对象的过程是什么?

0 投票
2 回答
2677 浏览

c# - C# BackGroundWorker Anomaly DoWork 事件未触发

这是我的设置,这段代码可以正常工作

如果我更改此行 tvPatientToHL7MSHManager.LoadByMSHID(""); 到 tvPatientToHL7MSHManager.LoadByPatientID("");

它跳过 DoWork 事件并直接进入 RunWorkerCompleted 事件。

LoadByMSHID 和 LoadByPatientID 之间的唯一区别是 SQL 语句上的过滤器,除了代码路径相同。

代码在没有后台线程的情况下可以正常工作。

任何想法或建议将不胜感激。

0 投票
2 回答
5395 浏览

c# - C#.Net - 如何取消从 WebService 中提取数据的 BackgroundWorker

我有以下代码:

该代码基本上是调用 WebService 方法的委托。不幸的是,我使用后台工作人员的主要原因是在加载数据时停止 UI 冻结。我有一个弹出的表格说请稍候,点击这里取消。

单击取消后,我在后台工作人员上调用 CancelAsync。现在,由于我没有循环播放,我看不到检查取消的好方法。我能看到的唯一选择是...

...在方法之外并在 DoWork(..) 开始时启动一个新线程,该线程调用 Web 服务来填充 m_CurrentData。然后,我需要执行循环检查是否取消或检查 m_CurrentData 是否不再为空。

有没有更好的方法来实现取消?

0 投票
3 回答
9108 浏览

c# - 使用 BackgroundWorker 更新 UI 而不会冻结...?

我有以下代码用于从后台线程填充 ListView(DoWork 调用 PopulateThread 方法):

不幸的是,这会导致 UI 在 foreach 中冻结...有没有办法更新/填充 ListView 而不会冻结主 UI?