거기에 BW에 대한 많은 질문이 있다는 것을 알고 있지만, 나는 아직도이 질문을 할 필요가 있다고 느꼈다./내가 원하는 정보를 얻은 것처럼 느껴지지 않았다 ... 아니면 누군가가이 정보를 나에게 설명해야한다. 그걸 이해할 수있는 방법은 ... 실제로는 BW.CancelAsync()
을 호출하는 실제 목적이 없습니다. CancellationPending 플래그를 true로 설정하는 것 외에도 ...BackgroundWorker 왜 CancelAsync()를 호출합니까?
기본적으로 제 질문은 :을 BW에 호출하는 이유는 무엇입니까?
또는 다른 방식으로 같은 질문 : 내 코드가이 방법으로 설정 되었습니까? 아니면 확인해야합니까? 아니면 CancelAsync()
을 절대 호출해야합니까? CancelAsync()
이 코드가 처리하지 못하는 용도는 무엇입니까?
이것은 약간 멍청하지만 어쨌든 일반적인 아이디어를 얻습니다.
void BW_DoWork(object sender, DoWorkEventArgs e)
{
Process_Status LastProcessed = Process_Status.None;
foreach(Iteration iter in Iterations)
{
//global form flag set when user presses CANCEL AND ROLLBACK button...
if (!this.IsRollBack)
{
try
{
//DO SOME WORK HERE
LastProcessed = Process_Status.SomethingSucceeded;
}
catch
{
this.LastFail = Process_Status.SomethingFailed;
//this, for me, cancels the thread and runs RunWorkerCompleted...
e.Cancel = true;
}
}
else
{
this.LastFail = LastProcessed;
//this, for me, cancels the thread and runs RunWorkerCompleted...
e.Cancel = true;
}
}
}
그리고 다음 RunWorkerCompleted에서
...void BW_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Cancelled)
{
switch(this.LastFail)
{
//DO SOMETHING MEANINGFUL HERE BASED ON GLOBAL STATUS...
}
}
}
누군가가 나를 더 나은 CancelAsync()
의 목적을 이해하는 데 도움이 수 있습니까?