나는 보통 내 응용 프로그램을 종료하기 위해 KeyDown
하위에 다음 줄을 추가했습니다 리소스를 해제하는 측면에서 응용 프로그램을 끝내는 가장 최악의 방법 중 하나입니다.응용 프로그램을 올바르게 종료하는 방법은 무엇입니까? 실제로 않습니다 <code>End</code>, 그것은 아마 것으로 밝혀 무엇에 설명서를 읽으면,</p> <pre><code>If e.KeyCode = Keys.Escape Then End </code></pre> <p>그러나 : 과거
이제는 모든 리소스를 적절히 처리 할 수있는 응용 프로그램을 종료하는 데 권장되는 방법을 찾으려고합니다. SO에 대한 두 가지 질문 (here 및 here)은 결론을 내릴 수 없습니다. e 옳은 대답은 실제로 무엇입니까.
first link에 대한 대답은 모든 양식에 Close()
을 적용하는 것이 올바른 방법이며 올바른 사용 리소스를 모두 해제한다고 말합니다. 이것은 여러 형태의 애플리케이션에서 편리하지 않습니다, 그리고 Application.Exit()
이 제안 내려 또한, 심지어 : 확실히 할 것
Application.Exit()
End
확신 프로그램은 첫 번째 줄에 실패하는 경우에도 끝납니다. 한편
는 second link에 허용 대답은 위의 모든 형태에Application.Exit()
전화
Close()
를 말한다 더 아래 답변을 모순 "
당신이 적절하게 설계된 응용 프로그램에
Application.Exit()
를 호출하지 않아도한다"라고 .Net의 이후 버전에서.
이로 인해 혼란스러워졌습니다. Application.Exit()
의 문제점은 무엇입니까?
Application.Exit()
End
하거나 무리이다 : 그것은 아무 문제가없는 경우
, 그때에 가서 바로 최고의 한 생각에 나는 무엇입니까? 그렇지 않은 경우 Application.Exit()
은 언제 작동합니까? (취소하는 코드를 작성할 때를 제외하고)?
참고 :이 질문은 여러 가지 양식이있는 프로그램을 포함하여 내가 작성한 모든 프로그램에 적용되지만 최근에 컴퓨터 간 연결을 위해 소켓을 사용하기 시작했으며이를 종료 할 때 추가 정보를 알려 주셨습니다. 연결의 중간에있는 프로그램. 나의 recent question에있는 코멘트는 Socket.Close()
호출이 심지어 필요하지 않다는 것을 나에게 확신시킨다. 그러나 지금 나는 End
을 사용하기 때문에 이것이 완전히 사실이 아닐 수도 있다는 것을 깨닫는다.
'하지만 지금은 당신이 End' 실행이 즉시 종료됩니다 '전화 - 만약 before'을 종료 종료를 사용하여 이후이 완전히 진실하지 않을 수 있음을 깨닫고 거기에 우아한 쓰레기 수거 (OS에 의해 모든 것이 공개 될 것입니다)가 없을 것입니다. 그래서 네,'End'를 사용할 때 연결을 정상적으로 닫으려면'Socket.Close()'를 호출해야합니다. **하지만 ** End를 사용하면 소켓 처분이 완료되기 전에 실행을 종료 할 수도 있습니다. 디버깅 할 때만 어플리케이션 릴리즈에'End'를 사용하지 않는 것이 좋습니다. –
@VisualVincent 감사합니다. 그럼 '끝'을 피할 것입니다. 왜 질문을 편집 btw? 이것은 .net에만 적용됩니다. – Shuri2060
제목에서 "VB"를 제거 했으므로 불필요하며 거기에 언어 나 태그를 쓰지 않는 것이 좋습니다. 'vb.net'으로 질문에 태그를 지정하면 이미 사용하는 언어가 표시되기 때문에 충분합니다. 참조 : [** 질문에 제목에 태그를 포함해야합니까? **] (http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles) –