SDN
3k
2020-02-04 18:30:05
2
155

[C#] NotifyIcon tray icon창에 안 남게하는 방법


안녕하세요 코린이 입니다.

현재 C#으로 이것저것 만들어보고 있는데 , 


C#에서 winform에서 버블 아이콘을 클릭하지 않아도 tray창에 안남게 만들고 싶습니다.


위와 같이 메시지가 뜨고 클릭하지 않으면, 

아래 와 같이

tray창에 잔득 쌓이게 됩니다.

클릭하지 않고, 그냥 마우스만 올려놔도 없어지기 때문에 괜찮을줄 알았는데 

저게 쌓이니까 보기가 않좋네요.


버블을 클릭하지 않아도 tray창에 안남게 하는 방법이 있을까요??


                    NotifyIcon notifyIcon6 = new NotifyIcon();
                    notifyIcon6.Icon = SystemIcons.Exclamation;
                    notifyIcon6.BalloonTipText = "Helloworld";
                    notifyIcon6.BalloonTipIcon = ToolTipIcon.Error;
                    notifyIcon6.Visible = true;
                    notifyIcon6.ShowBalloonTip(50000);
                    return;



1
0
  • 답변 2

  • 우리사이
    182
    2020-02-04 20:28:23

    적당한 이벤트에서 아래 처럼 실행해주면 없어져요


    notifyIcon6.Dispose();


    0
  • 맛난호빵
    27
    2020-02-12 20:01:48 작성 2020-02-12 20:02:00 수정됨

    윗분 말씀대로

    notifyIcon6.Dispose();

    호출해주시면 없어집니다.


    한가지 첨언 하자면 나중에 가면 배우시겠지만 .Net에서 관리해주는 메모리가 있고 관리해주지 못하는 메모리 영역이 있습니다.

    관리해주지 못하는 메모리는 보통 시스템과 관련된 영역(파일, 윈도우 핸들 등등)이고 이 부분은 내부 구현에 따라 자동으로 정리되기도 하지만 수동 정리를 하는것이 더 권장됩니다.


    그래서 NotifyIcon의 인스턴스에서 Dispose 메서드를 호출해주면 트레이 아이콘이 정상적으로 제거되게 됩니다.


    버블 아이콘을 클릭한 후에 (쓰레기)아이콘이 지워지는 이유는 관련 이벤트가 작동할때 윈도우 자체에서 프로세스가 없는 트레이 아이콘을 검사하여 지우기 때문입니다.


    레퍼런스 문서를 잘 살펴보시고 메서드 항목에 Dispose 메서드가 있다면 "아 이 클래스는 인스턴스 생성 후에 필요없어지면 Dispose를 호출해서 메모리를 정리해줘야하는 구나"라고 이해하시면 되겠습니다.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.