我对C#中的backgroundworker有一个问题。我正在编码一个dll文件。
这是我在VS2019中的类库(.NET Framework)类型项目中的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace States
{
public class ST
{
public static void Read()
{
BackgroundWorker bgwMessage = new BackgroundWorker();
bgwMessage.DoWork += new DoWorkEventHandler(BgwFileOpen_DoWork);
bgwMessage.RunWorkerAsync();
}
private static void BgwFileOpen_DoWork(object sender, DoWorkEventArgs e)
{
MessageBox.Show("Ran");
}
}
}
当我使用即时窗口调用read()
方法时,后台工作者的doWork
方法中的命令不会运行。逐行对问题进行解块显示read()
方法正在运行,但它没有以某种方式调用RunworkerAsync。
*Update1:启动线程也不起作用:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TradeStates
{
public class ST
{
public static void Read()
{
Thread thr = new Thread(new ThreadStart(MSGshow));
thr.Start();
}
public static void MSGshow()
{
MessageBox.Show("Ran");
}
}
}
DoWork
事件被激发一次以执行后台工作,并且不能执行任何访问UI控件/UI线程的操作。
您还可以使用另外两个事件。ProgressChanged
用于报告进度。例如,您可以实现该方法来更新进度条。另一个,也是我认为您应该感兴趣的是runworkercompleted
。在你的情况下你会有
bgwMessage.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(BgwFileOpen_ShowDialog);
...
private void BgwFileOpen_ShowDialog(object sender, RunWorkerCompletedEventArgs e)
{
MessageBox.Show("Ran");
}
最后的想法
form
或其他winforms类的属性,因为backgroundworker
继承自component
。dispose()
。read()
创建并启动worker,我建议您启动一个thread
,并在完成时让它向UI线程发送一条消息。然后,您的消息处理程序将启动消息框。BackgroundWorker类文档提供了如何正确使用该类的一个很好的示例。
本文向大家介绍C# BackgroundWorker使用教程,包括了C# BackgroundWorker使用教程的使用技巧和注意事项,需要的朋友参考一下 查询了一下MSDN文档,其中微软就BackgroundWorker类的功能有这么一个描述(英文的,根据个人理解翻译):BackgroundWorker类允许您在单独的线程上执行某个可能导致用户界面(UI)停止响应的耗时操作(比如文件下载数据库事
问题内容: (int)faultsGroup为0或1,但我总是收到此错误:列’FaultGroup’不能为null 有人告诉我为什么吗?语法看起来还可以。 问题答案: 我大约六个月没有使用MySql(感谢迁移到Sql Server),但是,请尝试将您的@符号更改为?,就像使用了内存一样,这是MySql的正确约定,因此:
我正在纠结于一个基本的浮点精度问题。问题就在这里: 运行代码得到“否”
亲爱的读者,这些C# Interview Questions专门设计用于让您了解在面试C#时可能遇到的问题的本质。 根据我的经验,很好的面试官在你的面试中几乎不打算问任何特定的问题,通常问题从这个主题的一些基本概念开始,然后他们继续基于进一步的讨论和你回答的问题 - 什么是C#? C#是由Microsoft开发的一种现代的,通用的,面向对象的编程语言。 C#专为公共语言基础结构(CLI)而设计,它
现在这种情况仍然发生,但很少发生,就像100次碰撞中有1次发生,而在100次碰撞中有20次发生之前
本文向大家介绍C和C++混合编程问题,包括了C和C++混合编程问题的使用技巧和注意事项,需要的朋友参考一下 分析以下一段代码: 调用以上三个文件,编译通过,但是执行是出现以下问题: obj : error LNK2001: 无法解析的外部符号 "int __cdecl sum(int,int)" (?sum@@YAHHH@Z) E:\Programming\Grapic\test\Debug\te