gpt4 book ai didi

c# - 后台工作类和使用 c# 中不同类的进度事件传递消息

转载 作者:太空宇宙 更新时间:2023-11-03 18:49:08 28 4
gpt4 key购买 nike

所以我有一个类(class)在一个新的后台工作人员中开始一个新类(class),后台工作人员使用 progresschanged 部分传回状态消息。

当我尝试通过键入来使用它时

classname.Dataworker.reportprogress(5)

在一个单独的类中,我收到一条错误消息,指出我在定义之前使用了一个对象。

我发现的示例都使用单个类和其中的不同函数。

这可能是一个愚蠢的容易犯的错误,但我就是看不出来,感谢您提供的任何帮助!

我的代码的总体概述是:

//form class

public static BackgroundWorker bw = new BackgroundWorker();

onbuttonclick
{
installer install = new installer();
bw.WorkerReportsProgress = true;
bw.WorkerSupportsCancellation = true;
bw.DoWork += class2.aFunction;
bw.ProgressChanged += new ProgressChangedEventHandler(mainForm_InstallerEvent);
bw.RunWorkerAsync();
}

private void mainForm_InstallerEvent(object sender, ProgressChangedEventArgs e)
{

lbl.Text = e.UserState.ToString();
}

////class2 后台 worker 类

aFunction
{
InstallerForm.bw.ReportProgress(5); //errors on this!
}

最佳答案

您需要调用 ReportProgress如果您想做这样的事情,请使用 UserState:

lbl.Text = e.UserState.ToString();

然后你的电话看起来像这样:

aFunction
{
InstallerForm.bw.ReportProgress(5, "5% Complete");
}

现在看起来您的 e.UserState 将为空,调用 ToString() 将导致空引用异常。
Here是 UserState 是文本的示例。

关于c# - 后台工作类和使用 c# 中不同类的进度事件传递消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1675124/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com