Delay.cs스레드
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace LearnThread
{
class Delay
{
public int Convert()
{
int ErrorCode = 1;
//something
//takes long time. about 9 hours.
return ErrorCode;
}
}
}
Form1.cs를
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace LearnThread
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnStart_Click(object sender, EventArgs e)
{
Delay delay = new Delay();
Thread t = new Thread(delay.Convert);
//something
MessageBox.Show("Success");
}
}
}
지연 지연 = 새로운 지연(); 반환 값이 예상되므로 여기에 오류가 있습니다. 오류 코드가 포함되어 있으므로 반환 값을 원합니다. 어떻게해야합니까? 배경 작업자가 스레드보다 낫다. 도와주세요. (delay.Convert()가 실행 중일 때 폼에 대한 제어권을 잃어서는 안됩니다.)
경고입니다. 이러한 코드 스 니펫이 작업을 수행합니다. ErrorCode를 1로 설정하면 C#에서 매우 쉬운 작업입니다. 하지만, "Convert()"메소드에서 너무 많은 시간이 걸리므로 (중간 엔드 PC의 경우 5 초), btnStart_Click()에서 ErrorCode가 잘못됩니다. 당신이 스레드 조인을 호출하지 않았기 때문에, 메인 스레드와 떨어져 있고, 스레드가 어떤 식으로 끝날 때까지 기다리지 않았습니다 ... "// something"의 줄에서 뭔가를해야합니다 :) –