달력

5

« 2025/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

'학습/C#'에 해당되는 글 3

  1. 2017.02.28 IIS ApplicationPool 제어하기
  2. 2014.06.13 [C#]Tray 적용하기 1
  3. 2014.05.16 [C#]CrossThread 처리방법
2017. 2. 28. 15:28

IIS ApplicationPool 제어하기 학습/C#2017. 2. 28. 15:28

사용 DLL

Microsoft.Web.Administration


Nuget패키지 설치

Install-Package Microsoft.Web.Administration -Version 7.0.0


버전7.0.0을 사용하시길 바랍니다.

버전7.9.0은 IIS Express를 사용하기때문에 리스트 및 제어가 안됩니다.


private static void ApplicationPoolStatus()

        {   //객체생성

            ServerManager server = new ServerManager();

            //ApplicationPool의 리스트 가져오기

            ApplicationPoolCollection applicationPools = server.ApplicationPools;


            foreach (ApplicationPool pool in applicationPools)

            {

                Console.WriteLine("Name : {0}, State : {1}", pool.Name,pool.State);

                //만약 testPool이라는 응용프로그램 풀이 있다면

                if (pool.Name.Equals("testPool") == true)

                {

                    //해당 상태가 정지상태라면

                    if (pool.State == ObjectState.Stopped)

                    {

                        //상태를 사용중으로 바꾼다

                        pool.Start();

                    }

                }

            }            

        }


IIS 응용프로그램풀의 제어 및 리스트불러올때는 Aministrator 권한이 필요합니다.

개발중 로컬에있는 IIS 응용프로그램 풀을 테스트 해보시고싶다면 Visual Studio를 관리자 권한으로 실행시키시면됩니다.




혹시 틀린부분이 있다면 지적해주시면 감사하겠습니다.

'학습 > C#' 카테고리의 다른 글

[C#]Tray 적용하기  (1) 2014.06.13
[C#]CrossThread 처리방법  (0) 2014.05.16
:
Posted by 쩡용
2014. 6. 13. 14:09

[C#]Tray 적용하기 학습/C#2014. 6. 13. 14:09


Tray Icon은 작업표시줄 오른쪽에 있는 작은 아이콘을 트레이 아이콘(Tray Icon)이라 합니다.



종료 혹은 최소화 버튼을 눌렀을때 Tray로 이동시키고 오른쪽버튼을 눌렀을때 ContextMenu가 보여지는 방법입니다.


1. 폼 디자이너 도구에서 NotifyIcon을 폼에 추가시켜줍니다.


2. 속성창에서 아이콘을 설정해줍니다.(아이콘을 설정해주지 않을시에 작업표시줄에 아이콘이 나타나지 않습니다.)



3. 트레이상태에서 마우스 오른쪽버튼을 눌렀을때 메뉴를 보여주기위해 ContextMenustrip을 폼에 추가시켜줍니다.





4. 폼이벤트에 Resize이벤트를 추가해줍니다.


  private void Form1_Resize(object sender, EventArgs e)

        {

            if (FormWindowState.Minimized == WindowState)             //Form상태가 최소화라면

            {

                Use_Notify();

                notifyIcon1.Visible = true;                                          //설정한 트레이아이콘이 보여지게한다

                this.Hide();                                                                   //Form창을 감춘다

            }

            else if (FormWindowState.Normal == this.WindowState)     //Form상태가 Normal이라면

            {

                notifyIcon1.Visible = false;                                        //설정한 트레이아이콘이 보여지지않는다.

                this.ShowInTaskbar = true;                                       //TaskBar에 나타난다.

            }

        }



Use_Notify함수는 컨텍스트메뉴를 연결시켜주고

트레이 아이콘으로 이동시 알림기능을 하기 위해 만들었습니다.


  private void Use_Notify()

        {

            notifyIcon1.ContextMenuStrip = contextMenuStrip1;       //트레이 마우스 오른쪽버튼을 클릭했을시 나타나는 메뉴연결

            notifyIcon1.BalloonTipText = "Test입니다.";                  //알림풍선 내용

            notifyIcon1.BalloonTipTitle = "Form1";                          //알림풍선 제목

            notifyIcon1.ShowBalloonTip(1);                                  //알림풍선이 보여지는시간.

        }




ContextMenuStrip과 BalloonTip

            


5. FormClosing이벤트를 추가시켜줍니다.


  private void Form1_FormClosing(object sender, FormClosingEventArgs e)

        {

            e.Cancel = true;                               //종료가 되지않게 이벤트를 캔슬시켜준다.

            this.Hide();                                     //Form창을 감춘다.

            Use_Notify();                                   

            notifyIcon1.Visible = true;                 //설정한 트레이아이콘이 보여지게한다

        }


6. NotifyIcon컨트롤에서 MouseDoubleClick이벤트를 추가시켜줍니다.


         private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)

        {

            if (e.Button == MouseButtons.Left)                                      //마우스 왼쪽버튼이라면

            {

                this.Visible = true;                                                         //Form을 보여준다.

                this.ShowInTaskbar = true;                                             //TaskBar에 보여준다.

                this.WindowState = FormWindowState.Normal;                  //Form상태를 Normal로 바꿔준다.

                notifyIcon1.Visible = false;                                              //Tray아이콘을 감춘다.

            }

        }



7. ContextMenuStrip에 메뉴마다 Click이벤트를 추가시켜준다.


        //ContextMenuStrip메뉴중 exit를 클릭했을때

  private void exitToolStripMenuItem_Click(object sender, EventArgs e)

        {

            notifyIcon1.Dispose();                 //트레이아이콘을 종료한다.

            Application.ExitThread();             //Application을 종료한다.

        }


  //ContextMenuStrip메뉴중 Show를 클릭했을때

        private void showToolStripMenuItem_Click(object sender, EventArgs e)

        {

            this.Visible = true;                                                //Form창을 보여준다.

            this.ShowInTaskbar = true;                                    //TaskBar에 보여준다.

            this.WindowState = FormWindowState.Normal;          //Form상태를 Normal로 바꿔준다.

            notifyIcon1.Visible = false;                                     //Tray아이콘을 감춘다.

        }

'학습 > C#' 카테고리의 다른 글

IIS ApplicationPool 제어하기  (0) 2017.02.28
[C#]CrossThread 처리방법  (0) 2014.05.16
:
Posted by 쩡용
2014. 5. 16. 15:00

[C#]CrossThread 처리방법 학습/C#2014. 5. 16. 15:00

Cross Thread란

MainThread가 돌게되면서 다른 Control의 값 변경을 하려할때 되는 문제이다.



나는 프로그램을 돌리면서 ListBox에 결과값을 추가시키려 하여 발생한 문제였다.

내가 해결한 방법은

전역변수에 Delegate를 선언하고 ListBox에 Item을 추가시켜주는 메소드를 만들어서 해결하였다.


private delegate void SetListBoxCallback(string msg);

이런식으로 전역변수에 Delegate를 선언해주고


ListBox에 Item을 추가시켜줄 메소드를 하나만들었다.


private void SetListBox(string msg)             //crossThread방지를 위해 델리게이트선언

        {

            if (this.lb_result.InvokeRequired)

            {

                SetListBoxCallback setlistboxcallback = new SetListBoxCallback(SetListBox);

                this.Invoke(setlistboxcallback, new object[] { msg });

            }

            else

            {

                lb_result.Items.Add(msg);

            }

        }



SetListBox(string.Format("trid : {0} {1}", id, retVal ? "성공" : "실패"));

그리고 결과값을 추가시켜줄땐 메소드를 불러서 그 메소드가 Item을 Listbox에 추가시켜주게 하여 해결하였다.


'학습 > C#' 카테고리의 다른 글

IIS ApplicationPool 제어하기  (0) 2017.02.28
[C#]Tray 적용하기  (1) 2014.06.13
:
Posted by 쩡용