gpt4 book ai didi

C#,后台 worker 类

转载 作者:行者123 更新时间:2023-12-03 21:51:40 27 4
gpt4 key购买 nike

当我编译这段代码时,我得到了他的错误,对象引用设置为null,错误位置在Dowork中,argumenttest.valueone = 8;

public partial class Form1 : Form
{
BackgroundWorker bgw1 = new BackgroundWorker();
public Form1()
{
InitializeComponent();
// bgw1.RunWorkerAsync(test1);

test test1 = new test
{
valueone = 5,
valuetwo = 10
};
bgw1.RunWorkerAsync(test1);
}

class test
{

public int valueone { get; set; }
public int valuetwo { get; set; }
}

private void bgw1_DoWork(Object sender, DoWorkEventArgs e)
{
test argumenttest = e.Argument as test;
Thread.Sleep(10);

argumenttest.valueone = 8;
argumenttest.valuetwo = 10;

e.Result = argumenttest;
}

private void bgw1_RunWorkerCompleted(Object sender, RunWorkerCompletedEventArgs e)
{
test test12 = e.Result as test;
button1.Text = test12.valueone.ToString();// +test.valuetwo.ToString();
//this.Text = test.valueone.ToString() + " "+ test.valuetwo.ToString();
}

private void button1_Click(object sender, EventArgs e)
{

bgw1.DoWork += bgw1_DoWork;
bgw1.RunWorkerCompleted += bgw1_RunWorkerCompleted;
//bgw1.RunWorkerAsync(test);

}
}

最佳答案

有两种可能的方式 argumenttest 最终为 null:

  1. argumenttest 已作为 null 发送到 RunWorkerAsync 中。

  2. e.Argument as test; e.Argument 不符合 test,并且 as 运算符将其设为 null

很难看出是哪一个,因为上面的代码示例非常困惑。

编辑

您能否确认您的代码完全与 decyclone 编辑的一样?在这种情况下,它看起来不错,并且据我所知应该可以工作。

在 DoWork 方法的第一行设置断点,调试时您应该可以通过将鼠标悬停在 e.Argument 上轻松查看 1. 或 2. 是否是问题。

关于C#,后台 worker 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4944076/

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