백그라운드에서 작업을 수행 할 새 스레드를 생성하고 UI 작업을 수행하는 UI 스레드에서 실행되는 코드가 있다고 가정합니다. 백그라운드 작업이 완료되면 BeginInvoke가 새 스레드에서 호출됩니다. UI 작업이 계속 진행중인 경우 BeginInvoke에 주어진 콜백이 UI 작업을 중단합니까, 아니면 기다릴까요?UI 스레드에서 이미 실행중인 BeginInvoke 인터럽트 코드를 사용할 수 있습니까?
코드 예제 - 폼에 단추 1이라는 버튼을 추가하고 클릭 이벤트를 Button1_Click을 추가 한 다음 폼이 추가
bool continueWork = true;
private void button1_Click(object sender, EventArgs e)
{
Thread workThread = new Thread(performBackgroundWork);
workThread.IsBackground = true;
workThread.SetApartmentState(ApartmentState.STA);
workThread.Start();
for (long i = 0; i < long.MaxValue; i++)
{
if (!continueWork)
break;
button1.Text = i.ToString();
}
}
private void performBackgroundWork()
{
Thread.Sleep(1);
button1.BeginInvoke(new MethodInvoker(stopUIWork));
}
private void stopUIWork()
{
continueWork = false;
}
는 클릭 한 후 단추 1의 텍스트가 무엇입니까?