저는 BackgroundWorker를 처음으로 사용하고 있으며, 사용법이 완전히 명확하지 않습니다. DoWork 핸들러에서 직접 이벤트를 보내거나 대신 ReportEvents를 호출하고 ProgressChanged 핸들러에서 이벤트를 보내야합니까? 이 이벤트를 발생하고 DoWork
내에서 UI 작업을 기술적으로 가능하지만BackgroundWorker의 DoWork 처리기에서 이벤트를 직접 실행할 수 있습니까?
1
A
답변
1
, 당신은 다른 스레드 내에서 (UI 상호 작용, 또는 적절한 스레드 동기화에 대한 Invoke()
또는 BeginInvoke()
를 사용하여, 그래서 그냥 당신이하는 것처럼해야 할 것이다 다른 크로스 스레드 작업), 이는 BackgroundWorker
의 목적을 무력화시킵니다.
ReportProgress()
을 호출하면 스레드로부터 안전한 방식으로 ProgressChanged
이벤트가 발생합니다. 완료 비율을 나타내는 int
을 전달합니다 (실제로 실제로 작업을 수행하는 것은 사용자에게 달려 있음). 선택적으로 이벤트 또는 진행 상황에 대한 특정 정보를 얻으려는 object
을 전달해야합니다. ProgressChanged 내에서 UI와 상호 작용하고 이벤트를 제기 할 수 있습니다.
-1
코드에 추가하기 만하면됩니다.
void new control.CheckForIllegelCrossPathThreads == false;
관련 문제
- 1. BackgroundWorker의 스레드를 죽일 수 있습니까?
- 2. node.js에서 .coffee 파일을 직접 실행할 수 있습니까?
- 3. bash에서 직접 파이썬 스크립트를 실행할 수 있습니까?
- 4. jquery에서 순서대로 이벤트를 실행할 수 있습니까?
- 5. BackgroundWorker의 완성을 어떻게 기다릴 수 있습니까?
- 6. BackgroundWorker의 처리되지 않은 예외
- 7. 비동기식으로 발생 된 이벤트를 양식에서 동 기적으로 실행할 수 있습니까?
- 8. "dir"을 직접 실행할 수있는 방법이 있습니까?
- 9. BackgroundWorker의 문제점
- 10. JDO 환경에서 직접 SQL 문을 실행할 수 있습니까?
- 11. 직접 실행 창에서 XPATH 쿼리를 실행할 수 있습니까?
- 12. 이벤트를 위임하고 이벤트를 호출 할 수 있습니까?
- 13. URL 또는 쿼리 문자열에서 onclick 이벤트를 실행할 수 있습니까?
- 14. AS3 : 클래스를 변경 한 경우 어떻게 이벤트를 실행할 수 있습니까?
- 15. Jquery Mobile - pagebeforehide - 이벤트를 실행할 수 없습니다.
- 16. 이벤트 처리기에서 wxMutex를 사용할 수 있습니까?
- 17. 이벤트 처리기에서 값을 반환 할 수 있습니까?
- 18. BackgroundWorker의 컨트롤로 패널 채우기
- 19. Winform에서 BackgroundWorker의 상태 업데이트
- 20. 결과에 따라 백그라운드 작업자에게 DoWork 재실행?
- 21. VisualBrush를 사용하여 wpf Viewport3D 내 렌더링 된 컨트롤이 특정 이벤트를 실행할 수 있습니까?
- 22. C# 백그라운드에서 스레드 연결하기 DoWork()
- 23. 자바 - jar 파일은 Windows에서 직접 실행할 수 있지만 명령 프롬프트
- 24. 코드 통합을 위해 JavaScript 이벤트를 직접 할당해야합니까?
- 25. 배경 작업자의 DoWork 취소 C#
- 26. AppEngine에서 OpenBravo를 실행할 수 있습니까?
- 27. Azure가 WPF를 실행할 수 있습니까?
- 28. AWS에서 AppArmor을 실행할 수 있습니까?
- 29. 다른 SwingWorker를 실행할 수 있습니까?
- 30. PHP 문자열을 실행할 수 있습니까?
일반적으로 다른 스레드의 UI 스레드와는 절대로 이야기해서는 안됩니다. 디버그하기가 매우 어려운 부작용이 나타날 것입니다. 그냥하지 마. Adam이 말한 것처럼 ReportProgress를 호출하는 것이 더 좋습니다. – Tony