일회용 객체는 사용이 끝나면 폐기해야합니다. 질문 : Windows 데스크톱 응용 프로그램 (예 : WPF 또는 WinForms)의 전체 수명 기간 동안 사용되는 일회용 객체 (예 : 데이터베이스 컨텍스트)가있는 경우 : 해당 객체를 응용 프로그램 종료 이벤트에 처리해야합니까 (왜, 언제 , 그렇지 않을 때)?Windows 데스크톱 응용 프로그램에서 일회용 종속성 처리
답변
일반적으로 응용 프로그램의 수명 동안 살아있는 일회용 개체가 없어야합니다. 데이터베이스 컨텍스트와 같은 많은 개체가 일 경우 해당 범위에서을 사용할 수 없습니다.
실제로해야 할 일은 개체가 IDisposable 패턴을 "올바르게"구현하는지 여부에 달려 있습니다. 일회용 객체가 파이널 라이저를 구현하면 Dispose
을 호출하지 않아도 응용 프로그램이 종료되면 폐기됩니다. 객체가 finalizer를 구현하지 않으면 누출 될 리소스가 문제가되지 않는 한 응용 프로그램이 종료 될 때 파기해야합니다. 예를 들어, 프로세스가 끝날 때 종료 될 메모리가 누출 될 경우 이벤트를 릴리스 할 필요가 없습니다. 이벤트 만 수신을 취소하면 실행 할 필요가 없습니다. 확실하지 않은 경우 정확히이 Dispose
방법으로 출시되면 안전하고 어쨌든 호출해야합니다.
내 응용 프로그램에서 로컬 DB (예 : SQL CE)를 사용하는 경우 답변을 이해할 수없는 몇 가지 점이 있습니다. 모든 작업에 컨텍스트를 처리해야하는 이유는 무엇입니까? 내 문맥을 IoC를 통해 주입 시켜서 싱글 톤으로 선언하십시오. 프로세스 종료에 대해 이야기하는 두 번째 요점은 프로세스가 종료 될 때 응용 프로그램에서 사용하는 모든 리소스를 다시 메모리 섹션, 파일, db 등으로 되 돌리는 것입니다. 그렇다면 왜 그 자원을 처분하십시오. 감사합니다 –
@Sniffer 아니요, 프로세스가 종료 될 때 항상 처리 메소드가 수행 할 자원을 회수 할 수있는 것은 아닙니다. Dispose 메서드에서 회수 된 모든 리소스가 프로세스가 해체 될 때 자동으로 수행된다는 사실을 명확히 알기 전까지는 처리해야합니다. 데이터베이스 컨텍스트에 관해서는; 당신은 많은 자원을 묶어두고 항상 열려 있습니다. 단일 트랜잭션에 사용되는 짧은 수명의 오브젝트가되도록 설계되었습니다. – Servy
- 1. Windows 응용 프로그램에서 이벤트 처리
- 2. C# 데스크톱 응용 프로그램에서 Windows Forms의 메뉴
- 3. Windows 데스크톱 응용 프로그램에서 CICS에 연결
- 4. 데스크톱 응용 프로그램에서 Windows 8 Metro 응용 프로그램으로 데이터 공유
- 5. 데스크톱 .NET 응용 프로그램에서 원격 데스크톱 실행
- 6. 일회용 객체 반복 처리
- 7. C# Windows 응용 프로그램에서 메모리 처리
- 8. 데스크톱 응용 프로그램에서 Log4J 구현
- 9. 내 C# 데스크톱 응용 프로그램에서
- 10. 데스크톱 응용 프로그램에서 SMS 보내기
- 11. 데스크톱 응용 프로그램의 메모리 누출 처리 C#
- 12. Windows 응용 프로그램에서 인수 전달
- 13. 데스크톱 응용 프로그램의 특수 URL 처리
- 14. 데스크톱 응용 프로그램에서 타일/보조 타일 만들기
- 15. Windows 8의 데스크톱 응용 프로그램에서 WinRT GestureRecognizer 호출
- 16. WPF 데스크톱 응용 프로그램에서 Windows 8 로밍 저장소가 필요합니까?
- 17. Windows 7 HTML 데스크톱 응용 프로그램에서 오디오 사용
- 18. Windows 데스크톱 응용 프로그램에서 웹 기반 API 사용
- 19. Expression Blend는 Windows 데스크톱 응용 프로그램에서 사용할 수 있습니까?
- 20. Java 데스크톱 응용 프로그램에서 응용 프로그램 속성로드
- 21. 웹 응용 프로그램에서 데스크톱 응용 프로그램으로
- 22. 데스크톱 응용 프로그램에서 'Windows.UI.Popups.MessageDialog'를 만드는 WinRT가 실패합니다.
- 23. 방정식을 Windows의 데스크톱 응용 프로그램에서 표시 C#
- 24. 데스크톱 응용 프로그램에서 서버 측 디버깅이 필요합니다.
- 25. Windows 데스크톱 응용 프로그램의 현지화
- 26. Java 응용 프로그램에서 Windows 전환
- 27. 데스크톱 응용 프로그램에서 비디오 스트리밍 표시
- 28. 데스크톱 응용 프로그램에서 ASP.NET 컨트롤을 렌더링합니까?
- 29. 데스크톱 응용 프로그램에서 iTunes 콘텐츠 구입
- 30. 웹 응용 프로그램에서 Windows 응용 프로그램 호출
데이터베이스 컨텍스트 *는 응용 프로그램의 전체 수명 동안 살아서는 안됩니다. 그들은 오래 살아있는 물건으로 설계되지 않았습니다. 각 DB 작업을 수행 할 때 다시 작성해야합니다. – Servy