[VB.NET] Tray Icon 만든 후 윈도우 종료시 종료 안 되는 문제점


윈도우 7에서는 정상작동되는데
희한하게 그 이하 버전(Vista는 솔직히 테스트 안해봐서 모르겠음ㅋ)에서는
종료 안 되는 현상이 있었다.

내가 만든 프로그램에서 그러니 더 황당할 수밖에 ㅋㅋ

왜 그런가 했더니 사용자가 폼 종료하면 숨기고 트레이에만 있게 하려던 것이
화근이었다.

프로그램을 종료하기 위해선 트레이 아이콘에 마우스 우클릭 후 종료를 눌러야지만
프로그램 종료되게 했더니 윈도우 종료시에도 종료 명령을 무시하는 결과를 초래한 것이다.

이해결법은 아래와 같다.

FormClosing에서 윈도우 종료일 경우 아래와 같이 Tray Icon을 수동 종료시켜주면된다.

Private Sub Form1_FormClosing(ByVal sender As Object,
ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing

'MsgBox(e.CloseReason.ToString)

If e.CloseReason = CloseReason.UserClosing Then ' 사용자가 종료했을 땐 창 숨기기
e.Cancel = True
Me.Hide()
Else ' 그외는 무조건 종료
NotifyIcon1.Dispose()
End
End If

End Sub


참고로 CloseReason.WindowsShutDown은 윈도우 시스템 종료일 경우이다.

출처 : 데브피아 이영복님의 글



Powered by Tattertools