29得票11回答
如何取消长时间运行的数据库操作?

目前正在使用Oracle,但还需要针对MS SQL的解决方案。 我有一个GUI,允许用户生成将在数据库上执行的SQL语句。这可能需要很长时间,这取决于他们生成的搜索条件。我希望GUI/App在此搜索期间响应并且用户能够取消搜索。 我正在使用后台工作线程。 我的问题是,当用户取消搜索时,我...

28得票4回答
使用匿名方法的BackgroundWorker?

我将创建一个带有匿名方法的BackgroundWorker。 我编写了以下代码:BackgroundWorker bgw = new BackgroundWorker(); bgw.DoWork += new DoWorkEventHandler( () => { ...

28得票5回答
如何将后台工作线程设置为单线程公寓?

我正在创建一个自动化测试运行应用程序。在该应用程序的这一部分中,我正在开发一个轮询服务器。它通过不断轮询web服务器来确定何时应运行新的自动化测试(用于GUI应用程序的夜间自动运行)。 当轮询服务器看到请求时,它会下载所有必要的信息,然后在后台工作线程中执行测试运行。问题是测试运行的某些部分...

25得票5回答
C#我应该创建一个后台工作线程还是多个?

我是一个偶然成为程序员的人,所以对于编程最佳实践并没有太多了解。 我有一个应用程序,目前使用了4个后台工作器。 因此我声明它们:private BackgroundWorker bw1; private BackgroundWorker bw2; private BackgroundWor...

23得票4回答
BackgroundWorker.CancellationPending如何保证线程安全?

取消 BackgroundWorker 操作的方法是调用 BackgroundWorker.CancelAsync():// RUNNING IN UI THREAD private void cancelButton_Click(object sender, EventArgs e) { ...

23得票13回答
定期运行的Windows服务

我正在编写一个Windows服务程序,一旦启动就会每隔X小时运行一次。完成的过程相当密集,因此我想使用后台工作进程。我使用设置文件存储运行间隔时间和服务最后运行时间。 我不确定最佳实现方式 - 我希望该服务在空闲时占用尽可能少的资源,并且在运行时需要在后台工作者中运行、报告其工作内容,然后返...

22得票3回答
如何等待BackgroundWorker完成并退出控制台应用程序

我编写了一个样例控制台应用程序来测试使用Stackoverflow中发布的示例之一来进行背景工作。我有一个backgroundworker,在主方法中启动,但如果我按下enter键,它会在操作中间结束,因为我在主方法中写了console.readkey。但是我希望它等待backgroundwo...

21得票4回答
使用带参数的 BackgroundWorker 的基本用法

我想要在后台线程中执行的耗费资源的方法调用看起来像这样:object.Method(paramObj, paramObj2); 这三个对象是我创建的。从我看到的最初的例子中,你可以将一个对象传递到后台工作者的 DoWork 方法中。但如果我需要向该对象传递其他参数,该怎么办,就像我在这里做的一...

20得票9回答
“因为正在进行树遍历,所以此时无法修改该节点的逻辑子级”是什么意思?

在后台工作线程的completed方法中设置对象的DataContext。出现错误,提示:“Cannot modify the logical children for this node at this time because a tree walk is in progress poin...

20得票3回答
难道不是.NET 4.0 TPL让APM、EAP和BackgroundWorker异步模式过时了吗?

我有两种基于C# WPF应用程序的项目: 基于.NET 4.0,无法迁移到.NET 4.5 基于.NET 4.0,可以迁移到.NET 4.5 它们都应该生成2-10个长时间运行(数天)的进程,用户可以取消和重新启动这些进程。 我希望遵循最佳设计实践。首先,我现在对Background...