이 코드를 컴파일하면 오류가 발생하고 개체 참조가 null로 설정되며 오류 위치는 Dowork에 있습니다. argumenttest.valueone = 8;C#, 백그라운드 작업자 클래스
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);
}
}
코드에서 더 자주 단어 테스트를 사용 했습니까? ;) – thumbmunkeys
@ Henk HolterMan : 저는이 배경 작업자 (스레딩)를 처음 접했고 실용적인 작업을하기 전에 연습으로 구현했습니다. – safi
@ pivotnig : 나는 쉽게 생각했다. ( – safi