首页 文章
  • -3 votes
     answers
     views

    将UI线程运行到工作线程中

    因为我知道由于UI和Worker线程之间的交互,不可能将winform加载到后台工作者的DoWork中,但是我找到了一种方法来实现这一点,我定义了另一个显示Form的线程,然后将该线程启动到背景工作者的DoWork . 它起作用了,我现在可以控制那个背景工作者的过程...但是我不确定它是否是一种安全的方法 . 我的简化计划是:命名空间WindowsFormsApplication1 { publi...
  • 64 votes
     answers
     views

    BackgroundWorker中未处理的异常

    我有一个小型的WinForms应用程序,它利用BackgroundWorker对象来执行长时间运行的操作 . 后台操作会抛出偶然的异常,通常是当有人打开正在重新创建的文件时 . 无论代码是否从IDE运行,.NET都会弹出一个错误对话框,通知用户发生了未处理的异常 . 使用Release配置编译代码也不会改变它 . 根据MSDN: 如果操作引发了代码无法处理的异常,则BackgroundWorke...
  • 5 votes
     answers
     views

    PHP开发人员关于Java for Web Development的问题

    我有几年用PHP开发Web应用程序的经验,我也广泛使用Java(但从未用于Web应用程序开发) . 我正在完成一个大型项目,过去六个月我一直在使用PHP / CodeIgniter构建并使用CloudControl托管(提供自动服务器配置和可伸缩性) . 该项目进展顺利,PHP满足了我的需求 - 但现在我正处于开发面向企业用户的Web应用程序的开始阶段,我正在考虑将Java(可能是'Grails'...
  • 0 votes
     answers
     views

    VB.Net循环内的异步背景工作者

    我正在使用Vb.net visual studio 2008.我有一个进程(system.diagnostics.process)在后台运行,它更新了Ui线程进度条和一个标签,我使用backgroundworker.runworkerAsync进行了工作 . 现在问题是我必须使用不同的输入多次使用相同的过程 . 代码块是: Private Sub fnStartEvent(ByVal sender...
  • 0 votes
     answers
     views

    取消连续从网络流中读取的后台工作程序

    我有一个运行的TCP服务器,它定期发出2个字节的消息 . 我正在尝试创建一个连接到服务器的客户端表单,并从流中连续读取,直到我单击表单上的断开连接按钮 . 到目前为止客户端工作正常,除了我无法断开连接 . 我将CancellationPending设置为true,但在dowork方法有机会设置e.Cancel之前似乎重置为false . 我也确定必须有一种更可接受的方式来连续读取流并写入表单 - ...
  • 2 votes
     answers
     views

    在e.cancel = true之后,后台工作程序不会运行“RunWorkerCompleted”;

    这是dowork代码 . 我甚至介入过这个 . 在e.cancel = true之后,DoWork再次运行,它进入while循环,它再次将e.Cancel设置为true,然后退出该函数并且从不运行Completed函数 . private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e) { Ba...
  • 2 votes
     answers
     views

    停止背景工作者

    我的应用程序使用后台工作程序在循环内做一些工作 . 我有它,所以在每次循环迭代时,它检查取消挂起是否为真,如果是,则打破循环 . 好的,我的应用程序一旦完成循环的当前迭代就会停止处理 . 问题是我认为后台工作程序仍然在运行 - 如果我单击按钮再次开始处理,我会收到一个错误,说后台工作人员正忙 . 我打算处理这个工作人员,但是当表单运行时就会创建它,所以如果我处理它,那就不能再开始工作了 . 我真正...
  • 1 votes
     answers
     views

    停止然后快速连续启动相同的后台工作程序

    当在CancelAsync()调用和RunWorkerAsync()调用之间只有非常小的间隔时,我在使用VB.net停止然后启动后台工作程序时遇到一些困难 . 我已经创建了一个示例来说明下面的问题 . 如果单击按钮一次然后快速连续单击两次,则会出现此示例中的问题 . 从本质上讲,正如我所理解的那样,问题是后台工作者仍在迭代for循环(包括模拟需要一些时间运行的代码)并且还没有机会检查取消是否正在等...
  • 1 votes
     answers
     views

    停止并重新启动BGWorker时,取消标志是否会受到竞争条件的影响?

    我见过这个answer 是的,BackgroundWorker类在引发RunWorkerCompleted事件之前将CancellationPending属性设置为false . 以及CancelAsync和RunWorkerAsync的文档 我有这个代码阻止 InvalidOperationException 被抛出 . 这是我的代码,所以 WorkerSupportsCancellatio...
  • 0 votes
     answers
     views

    vb.net后台工作人员取消不工作

    我遇到了BackgroundWorker.CancelAsync()无效的问题 . 我将WorkerSupportsCancellation设置为TRUE . 我也在DoWork中轮询BackgroundWorker1.CancellationPending . 这是我想要实现的示例代码 . 我让后台工作程序循环遍历时间戳并为Measurement变量赋值 . 我有一个子程序,查询上次报告的Mea...
  • 1 votes
     answers
     views

    如何关闭cmd.exe窗口作为后台工作程序C#中的进程运行?

    我对C#很新,并试图了解后台工作人员 . 目前,当我运行此代码时,它将停止重定向并在单击StopButton后从命令提示符读取输出并留下“已取消”消息,但之后不执行任何操作 . 我目前可能实现这一切都错了,但我通过单击调用CancelAsync()的停止按钮来设置e.Cancel,这会取消CancellationPending = true . 任何人都有任何想法我应该怎么做? 非常感谢!!我很感...
  • 11 votes
     answers
     views

    取消后台任务

    当我的C#应用程序关闭时,它有时会陷入清理例程 . 具体来说,后台工作人员没有关闭 . 这基本上就是我试图关闭它的方式: private void App_FormClosing(object sender,FormClosingEventArgs e){backgroundWorker1.CancelAsync();而(backgroundWorker1.IsBusy); //被困在这里} 我应...
  • 8 votes
     answers
     views

    使用ASP.NET中的后台工作程序和AJAX

    我需要执行一个后台任务,其中包含一个显示完成百分比的进度条和一个取消按钮 . 除了任务细节之外,目前我只想得到一个实例,所以我只有三个主要的事件处理程序(DoWork,ProgressChanged和RunWorkerCompleted)和一个循环,只是增加一个计数器并在DoWork中休眠50ms . 但是,除了最后一次之外它不会更新 . 在Windows窗体中,我使用后台工作程序,它正常运行,没...
  • 0 votes
     answers
     views

    将自定义数据与Outlook mailItem / inspector窗口相关联

    我有一个用vb.net编写的Outlook 2010插件,当用户将附件添加到他们正在编写的电子邮件时触发attachment_add事件 . 我提取此附件的临时位置,然后使用后台工作程序对其进行一些处理(这可能需要1-10秒) . 我需要在用户发送电子邮件之前完成此处理,因为结果用于另一位在用户点击发送时实时运行的代码 . 我有一个全局布尔值is_processing,当扫描进行时切换为true,...
  • 0 votes
     answers
     views

    后台工作者启动COM组件

    我正在使用一个非常慢的COM组件(花几分钟时间给我请求的数据)所以为了保持UI响应,在我的WPF应用程序中,我正在考虑使用Task或BackgroundWorker Classes来创建后台线程,并禁用UI上的所有控件都可以防止出现任何问题,因为组件不是可线程的 . 该组件仅作为标准COM引用添加到项目中 . 问题是它从任何后台线程都不起作用(包括使用new进行初始化) . 它从UI线程工作正常 ...
  • 6 votes
     answers
     views

    有没有在WPF中使用Background Worker的替代方法?

    我是WPF的初学者,在我的应用程序中我需要执行一系列初始化步骤,这些步骤需要10-15秒才能完成,在此期间我的UI变得无法响应 . 我昨天使用的是后台工作者,但它没有更新我的窗口,事实上它被冻结了 . 不确定,但也许它不起作用,因为此控件仅适用于Windows窗体 . UPDATE: 如果不是太麻烦,你能给我一个例子来使用替代方案吗?对于我的情况,程序将从一个数据库中获取一些值 .
  • 0 votes
     answers
     views

    线程新手,需要帮助使用后台工作者使静态变量线程安全

    正如 Headers 所暗示的那样,我对线程概念不熟悉,而且我正在学习 . 我正在研究一个程序,作为涉及3D打印机的研究项目的一部分 . 我有两个需要连接的硬件:一个上下移动的小舞台,一个力传感器,可以检测舞台上的物体何时与传感器接触,作为停止移动舞台的信号 . 正如我所说,我是整个线程概念的新手,所以我甚至不确定我是否正确设计,如果我应该使用backgroundworker或Thread类,如何...
  • 1 votes
     answers
     views

    在运行时创建复杂的UserControl而不冻结GUI

    我有一个非常复杂的UserControl需要在运行时创建 . 这个创建冻结了GUI大约5秒钟(这是不可接受的) . 我试图将此操作移动到后台工作器并最终得到此异常: 调用线程必须是STA,因为许多UI组件都需要这个 . 我知道我不能使用MTA线程来创建UserControl / UI元素 . 我尝试使用BackgroundWorker和Dispatcher的组合,但它不起作用 . First...
  • -1 votes
     answers
     views

    从背景工作者返回

    我正在研究背景工作者 . 这就是我需要做的事情:从后台工作者返回,然后返回到程序的主线程 . 我正在使用Windows窗体应用程序,取消后台工作程序后,控件应该返回到窗体,这样我就可以再次调用相同的函数 . 我添加了示例代码,因为我在while循环中使用的代码非常大 . void funtion1() { while(true) { if(backgroundWorker1...
  • 0 votes
     answers
     views

    Windows窗体:后台工作程序同步和管理

    我有一个问题跟随,非常简化的案例是我的项目的一部分 . 考虑我们有如下GUI: 我有两个背景工作者: plot_bgworker - 在这个例子中,它增加了绘图计数器, data_bgworker - 在此示例中,它递增数据计数器 . 我还有label_timer,它会更新我的表单上显示的递增值 . 为了管理后台工作者和计时器,我写了两个函数: private: void tur...
  • 259 votes
     answers
     views

    调用线程无法访问此对象,因为另一个线程拥有它

    我的代码如下 public CountryStandards() { InitializeComponent(); try { FillPageControls(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Country Standards...
  • 0 votes
     answers
     views

    工作表事件(单元格更改,选择更改)在c#addin for excel中运行后台线程后未触发

    我正在为excel开发一个VSTO加载项 . 我使用后台工作线程在后台执行一些代码,以便用户可以同时在excel表上自由工作 . 我使用主代码中的sheet_activate事件处理程序为单元格更改和选择更改事件注册了侦听器,如代码所示: private void thisWorkbook_SheetActivate(Object sheet1) { try ...
  • 2 votes
     answers
     views

    Sidekiq没有找到 Worker 的对象

    当我在我的应用程序中创建一个新的 User 时,我运行 after_create 方法然后异步触发Sidekiq工作程序 . 这个 Worker ...... def perform user_id @user = ::User.find user_id # ... end ...始终返回以下错误: ActiveRecord :: RecordNotFound:找不到'id'的...
  • 170 votes
     answers
     views

    如何使用WPF后台工作程序

    我是 WPF 的初学者,在我的应用程序中我需要执行一系列初始化步骤,这些步骤需要7-8秒才能完成,在此期间我的UI变得无法响应 . 为了解决这个问题,我在一个单独的线程中执行初始化: public void Initialization() { Thread initThread = new Thread(new ThreadStart(InitializationThre...
  • 0 votes
     answers
     views

    关闭在与后台工作程序WorkRunCompleted不同的线程上创建的wpf窗口

    嗨,有一个跟进另一个问题here 这是摘要 在c#中的wpf应用程序中,我有一个更新远程数据库的漫长过程 . 为此我创建了一个后台工作者 . 但是我想在数据库更新例程期间打开一个窗口并运行一个进度条 . 由于我的进度条上的“嗖嗖”效果在我的主窗口上没有开始运行直到我的后台工作线程完成后,我在主窗口上实现此操作的所有尝试都失败了,因为进度条设置为Indeterminate失败 任何有帮助和本文her...
  • 1 votes
     answers
     views

    “调用线程无法访问此对象,因为不同的线程拥有它 . ”与Twitterizer

    我正在开发WPF中的Twitter客户端,我想使用后台工作程序来更新推文,但会产生此错误消息“调用线程无法访问此对象,因为不同的线程拥有它” . public NewTweet() { InitializeComponent(); this.MouseLeftButtonDown += (o, e) => DragMove(); worker.WorkerRepor...
  • 1 votes
     answers
     views

    FolderBrowserDialog隐藏在后台

    我从Winforms应用程序中打开FolderBrowserDialog . 应用程序启动后第一次运行正常 . 然后我开始做背景工作并做一些工作 . 如果我那么,在Backgroundworker完成之后,再次打开FolderBrowserDialog,应用程序被“锁定”,因为FolderBrowserDialog已打开但隐藏在后台的某处 . 我必须按ALT键才能使对话框可见 . 问题必须与背景工...
  • 139 votes
     answers
     views

    Async / await vs BackgroundWorker

    在过去的几天里,我测试了.net 4.5和c#5的新功能 . 我喜欢它的新async / await功能 . 之前我曾使用BackgroundWorker在后台处理响应式UI的更长进程 . 我的问题是:在拥有这些不错的新功能之后,我何时应该使用async / await和BackgroundWorker?两者的常见情况是什么?

热门问题