저는 CompSci 학생이며 C#에서 상당히 새로워졌으며 클래스에 대해 "Josephus Problem"프로그램을 수행하고 있었고 Exit 단추를 만들었습니다 언제든지 종료하려면 Application.Exit()을 호출하지만 C#이 여전히 페인팅에 대해 작업 중이며 버튼을 누르면 Graphics 객체에 대해 ObjectDisposedExeception이 발생합니다. 이것을 막을 수있는 방법이 있습니까? try {} catch를 생각하거나 부울을 변경하여 페인팅 프로세스가 종료되기 전에 중단하도록 지시하지만 다른 해결책이 있는지 알고 싶습니다.그리기 및 응용 프로그램이 종료 될 때 C#에서 ObjectDisposedException을 방지하는 방법
1
A
답변
1
이렇게해서는 안됩니다. 윈도우와 같은 thread로 버튼을 작성하면 (자), 메세지 펌프를 공유해, 종료 버튼을 처리하기 위해서 페인트 핸들러를 인터럽트 할 수 없습니다. 버튼이 클릭되었다는 메시지는 Paint 핸들러가 반환 할 때까지 스레드의 메시지 대기열에 대기합니다.
일반적으로 페인트를 Paint 핸들러 (또는 OnPaint를 재정의)로 연기하고 화면을 업데이트해야하는 모든 곳에서 컨트롤의 Invalidate 메서드를 호출해야합니다. 즉, 영역을 다시 그리는 것이 필요하고 다른 모든 메시지가 처리되면 WM_PAINT
메시지가 생성되어 궁극적으로 OnPaint가 호출되어 Paint 이벤트가 실행됩니다.
애니메이션을 사용하는 경우 스레드를 사용하는 대신 각 프레임을 트리거하려면 System.Windows.Forms.Timer
을 사용하십시오. System.Threading.Timer
콜백은 스레드 풀에서 실행되므로 항상 UI를 조작하기 위해 잘못된 스레드에 있습니다.
2
양식을 순서대로 닫으려면 단추가 들어있는 Form의 Close() 메서드라고해야합니다. 메인 폼을 닫으면 어쨌든 응용 프로그램이 종료됩니다.
관련 문제
- 1. 응용 프로그램이 종료 될 때 감지하는 방법?
- 2. 응용 프로그램이 종료 될 때 타이머가 실행됩니다.
- 3. 응용 프로그램이 어떤 화면에서 종료 될 때 알릴 수있는 방법
- 4. Windows에서 PyQt4 응용 프로그램이 종료 될 때 종료됩니다.
- 5. 응용 프로그램이 종료 될 때 Silverlight IsolatedStorage가 제거 되었습니까?
- 6. 백그라운드에서 응용 프로그램이 종료 될 때 정리를 수행하는 방법은 무엇입니까?
- 7. iPhone : 응용 프로그램이 종료 될 때 NSUserDefaults 값 유지
- 8. ASP.NET 응용 프로그램이 재활용 될 때 감지
- 9. 응용 프로그램이 활성화 될 때 감지
- 10. 응용 프로그램이 설치 될 때 디렉토리를 만드시겠습니까?
- 11. 백그라운드에서 응용 프로그램이 활성화 될 때 감지
- 12. 프로그램이 정상적으로 종료 될 때 어떤 신호를 보내야합니까?
- 13. C# 창이로드 될 때 그리기
- 14. 프로그램이 종료 될 때까지 상호 작용할 기대하기
- 15. 응용 프로그램이 비활성화 될 때 스레드를 닫는 방법?
- 16. 응용 프로그램이 활성화 될 때 응용 프로그램 충돌이 발생합니다.
- 17. WebKit 웹 응용 프로그램이 "종료"되었을 때 발생하는 이벤트
- 18. Qt는 응용 프로그램이 종료 할 때 실패 (0xC000004B)
- 19. 응용 프로그램이 종료 될 때 데이터베이스에 값을 추가 할 때의 문제
- 20. JavaServiceWrapper : 응용 프로그램이 종료 대기 중입니다.
- 21. 최대 절전 모드를 종료 할 때 WPF 응용 프로그램이 실패합니다.
- 22. 앱이 종료 될 때 마지막으로 본 UIViewController로드하기
- 23. 내보내기 후 종료시 보고서 뷰어 호스팅 응용 프로그램이 종료 될 때 오류가 발생합니다.
- 24. 응용 프로그램이 사용자에게 보이지 않을 때 배경 음악을 멈추는 방법
- 25. ThreadPool.QueueUserWorkItem이 종료 될 때까지 응용 프로그램이 멈추는 원인이 될 수 있습니다.
- 26. 응용 프로그램이 종료 된 경우에도 경보
- 27. 응용 프로그램이 충돌 할 때 처리하는 방법
- 28. Motorola Backflip에서만 응용 프로그램이 비정상 종료 됨
- 29. 응용 프로그램이 활성화 될 때 모달보기 컨트롤러 제거
- 30. 시작시 응용 프로그램이 매우 비정상적으로 종료 됨