0
A
답변
1
스스로 죽었습니다.
작업이 실행 중일 때 주 스레드에서 호출하려고합니다. 작업이 ... 당신이 사용하는 어떤 경우
를 (가 준비 될 때까지 task.Wait()를 차단합니다) 완료 될 때까지하지만 mainthread 기다리고 있습니다 :
await task;
이 코드를 사용하는 방법해야 비동기로 표시됩니다. 컴파일러는 메소드를 조각으로 자르고 기다리는 동안 messageloop/thread가 다시 실행됩니다. 작업이 준비되면 나머지 메서드가 실행됩니다. await vs Task.Wait - Deadlock?
1
이 교착 상태입니다 자세한 정보를 원하시면 여기를
봐;합니다 (await를 작업 아래). UI 스레드가 task.Wait()
행에서 차단되어 작업이 완료 될 때까지 대기합니다. 진행률 표시 줄을 업데이트하려면 UI 스레드에 알려야하기 때문에 작업은 Invoke
에서 차단됩니다.
아니요은 UI 스레드에서 완료 될 때까지 기다려야하며 task.Wait()
을 제거해야합니다. 작업이 완료되자 마자 UI가 업데이트됩니다.
당신이 호출 액션 내부에 가야한다 아래 task.Wait()
넣어 가고 있었다 코드 :
var task = System.Threading.Tasks.Task.Factory.StartNew(() =>
{
// do task work
Invoke(new Action(() => {
progressBar.Increment(1);
// other code that needs the task to be finished should go here
}));
});
// don't call task.Wait() here
관련 문제
- 1. 어떻게 작업 생성이 코드를 가지고 작업 실행
- 2. 무한 재귀 호출은이 경우 스택 오버플로를 발생시켜야합니까?
- 3. 하위 범주가이 코드를 가지고
- 4. 어떻게이 코드를 가지고 MenuItem을
- 5. 내가 코드를 가지고 쿼리
- 6. 다음 코드를 가지고 SEG.FAULT
- 7. 양식 : 검증이 코드를 가지고
- 8. 변경 마진이 코드를 가지고
- 9. 나는이 코드를 가지고,
- 10. JQuery와 나는이 코드를 가지고
- 11. 내가 코드를 가지고 BASH
- 12. 로 preventDefault이 코드를 가지고
- 13. 통화 기능은이 코드를 가지고
- 14. , 나는이 코드를 가지고 JQuery와
- 15. 포인터는이 코드를 가지고
- 16. CMD/배치이 코드를 가지고
- 17. 어떻게이 코드를 가지고 JQuery와
- 18. 내가지도의 체인을 가지고 다음 작업
- 19. jQuery를 내가이 양식을 가지고 작업
- 20. 입력이 코드를 가지고 문자열 값
- 21. 내가 디자이너에서 다음 코드를 가지고
- 22. 나는 다음과 같은 코드를 가지고
- 23. 이 코드를 가지고 변수 규모
- 24. , 나는 다음과 같은 코드를 가지고,
- 25. 파일 안드로이드는 안녕하세요이 코드를 가지고
- 26. 나는 다음과 같은 코드를 가지고
- 27. 나는 다음과 같은 코드를 가지고
- 28. 클릭하면, 다음과 같은 코드를 가지고
- 29. 어떻게이 같은 코드를 가지고 팬더
- 30. 컬 요청하고이 코드를 가지고 브라우저
이 WPF 응용 프로그램입니까? – Alden
WinForm 응용 프로그램입니다. – Baptiste