Tag: backgroundworker

如何报告从一个类到BackgroundWorker的进度?

我的WinForm调用一个执行一些复制操作的类。 我想在表格上展示这方面的进展。 我想使用Backgroundworker,但我不知道如何报告从课程到表单的进度(/ backgroundworker)

背景工作人员在午夜时检查?

我想为WinForm创建一个后台工作程序,每当午夜滚动时触发代码。 我知道如何做到这一点,但我很确定这不是最好的方法。 while(1==1) { //if Datetime.Now == midnight, execute code //sleep(1second) }

在后台工作程序中暂停/恢复循环

我在Winform应用程序中的后台工作程序中有一个循环。 我刚刚使用了此代码,但在暂停后它不会恢复。 在主类我使用这个 System.Threading.ManualResetEvent _busy = new System.Threading.ManualResetEvent(false); 然后在我的开始点击我写了这个: if (!backgroundWorker1.IsBusy) { MessageBox.Show(“Not Busy”); //Just For Debugg _busy.Set(); Start_Back.Text = “Pause”; backgroundWorker1.RunWorkerAsync(tempCicle); } else { _busy.Reset(); Start_Back.Text = “Resume”; } btnStop.Enabled = true; 然后在backgroundworker doWork中我写了这个: private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { m_addTab addTabsInvoke = addTabUrl2; Invoke(addTabsInvoke, “http://www.google.com”); foreach (something) { _busy.WaitOne(); if (backgroundWorker1.CancellationPending) { […]

报告来自不同类c#的进度backgroundworker

在我的.NET C#项目中,我使用“BackgroundWorker”来调用另一个类中的方法。 以下是我的主要表格的源代码 public partial class Form1 : Form { public Form1() { InitializeComponent(); } testClass t1 = new testClass(); private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { t1.changevalue(1000); } private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) { label1.Text += Convert.ToString(e.ProgressPercentage); } private void button1_Click(object sender, EventArgs e) { backgroundWorker1.RunWorkerAsync(); } } 并在我的项目中名为“testClass.cs”的单独类文件中包含以下代码。 我想从此类向BackgroundWorker报告进度,以便我能够从label1显示main中的进度。 class testClass { […]

C#Downloader:我应该使用Threads,BackgroundWorker还是ThreadPool?

我正在用C#编写一个下载程序并停止了以下问题:我应该使用什么样的方法来并行化我的下载并更新我的GUI? 在我的第一次尝试中,我使用了4个线程,并且在每个线程完成时我开始了另一个:主要问题是我的cpu在每个新线程启动时都是100%。 谷歌搜索,我发现BackgroundWorker和ThreadPool的存在:说我想用我正在下载的每个链接的进度更新我的GUI,什么是最好的解决方案? 1)创建4个不同的BackgroundWorker,附加到每个ProgressChanged事件,委托GUI中的函数来更新进度? 2)使用ThreadPool并将最大和最小线程数设置为相同的值? 如果我选择#2,当队列中没有更multithreading时,是否会停止4个工作线程? 它暂停了吗? 由于我必须下载不同的链接列表(每个链接20个链接)并在完成一个链接时从一个链接移动到另一个链接,ThreadPool是否在每个列表之间启动和停止线程? 如果我想在live上更改工作线程的数量并决定使用ThreadPool,从10个线程更改为6,它是否会抛出exception并停止4个随机线程? 这是让我头疼的唯一部分。 我提前感谢你们每个人的答案。

在WPF中,Windows Forms中的Suspend / ResumeLayout()和BackgroundWorker()相当于什么

如果我在后面的代码中的函数中,并且我想在状态栏中实现显示“正在加载…”,则以下内容是有意义的,但是正如我们从WinForms中知道的那样是NoNo: StatusBarMessageText.Text = “Loading Configuration Settings…”; LoadSettingsGridData(); StatusBarMessageText.Text = “Done”; 我们现在从WinForms第1章101类开始,在整个函数完成之前,表单不会显示对用户的更改…这意味着“加载”消息将永远不会显示给用户。 需要以下代码。 Form1.SuspendLayout(); StatusBarMessageText.Text = “Loading Configuration Settings…”; Form1.ResumeLayout(); LoadSettingsGridData(); Form1.SuspendLayout(); StatusBarMessageText.Text = “Done”; Form1.ResumeLayout(); 在WPF中处理这个基本问题的最佳做法是什么?

线程/线程池或后台工作者

我想知道什么用于需要很多性能的任务。 Backgroundworker , Thread还是ThreadPool ? 到目前为止,我一直在使用Threads,但我需要提高应用程序的速度。

如何使用按钮启动和停止连续运行的后台工作者

假设我有一个像这样的后台工作者: private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { while(true) { //Kill zombies } } 如何让这个后台工作者开始和停止使用WinForm上的按钮?

InvalidOperationException – 对象当前正在其他地方使用

我已经完成了这个问题,但没有帮助。 这里的情况不同。 我正在使用Backgroundworkers。 第一个backgroundworker开始对用户的图像输入进行操作并在firstbackgroundworker_runworkercompleted()内部我正在使用调用其他3个后台工作者 algo1backgroundworker.RunWorkerAsync(); algo2backgroundworker.RunWorkerAsync(); algo3backgroundworker.RunWorkerAsync(); 这是每个的代码: algo1backgroundworker_DoWork() { Image img = this.picturebox.Image; imgclone = img.clone(); //operate on imgclone and output it } algo2backgroundworker_DoWork() { Image img = this.picturebox.Image; imgclone = img.clone(); //operate on imgclone and output it } 类似的操作在其他algo * backgrougrondworker_doWork()中完成。 现在有时我得到“InvalidOperationException – 对象目前正在其他地方使用”。 它很随意。 我有时会在algo1backgroundworker_DoWork中获取此信息,有时在algo2backgroundworker_DoWork中,有时在Application.Run(new myWindowsForm())中获取; 我不知道发生了什么事。