배경 작업자에게 심각한 문제가 있습니다. 작업이 정기적으로 끝나면 코드가 작동합니다. 백그라운드 작업을 취소하면 e.Result의 RunWorkerCompleted 함수에서 system.invalidoperationexception이 발생합니다. 뭐가 잘못 되었 니? 고맙습니다. DoWork 취소하거나 예외를 던져 때e.result에서 배경 작업자 예외를 취소합니다.
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
if (backgroundWorker.CancellationPending == true)
e.Cancel = true;
e.Result = resultList;
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error != null)
List<Object> resultList = (List<Object>)e.Result;
}
확인 아,하지만 난이 취소 된 경우 이벤트를 초래할 필요하면 무엇을해야 하는가? – user1069951
이것을 조금 생각해보십시오 : DoWork가 예외에 의해 중단되거나 인터럽트되면 유효한 결과를 가질 수 없습니다. 그것은 끝나지 않았다. –
의도에 의해 취소됩니다. 사용자가 시간 소모적 인 작업을 중단 한 다음 backgroundWorker.CancelAsync()가 호출됩니다. 아직 예외가 아닙니다. 나는 현재 사용자에게 결과를 제시하고자한다. 어떻게 할 수 있습니까? 단서 없음 – user1069951