■ Process 클래스의 Start 정적 메소드를 사용해 인터넷 익스플로러를 실행하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using System.Diagnostics; Process process = new Process(); process.StartInfo.FileName = "iexplore.exe"; process.StartInfo.UseShellExecute = true; process.StartInfo.CreateNoWindow = true; process.StartInfo.WindowStyle = ProcessWindowStyle.Maximized; process.StartInfo.Arguments = "http://www.daum.net"; process.EnableRaisingEvents = false; process.Start(); |
■ Thread 클래스의 Join 메소드를 사용하는 방법을 보여준다. ▶ 예제 코드 (C#)
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
|
using System; using System.Threading; private static void ThreadProcess() { for(int i = 0; i < 10; i++) { Console.WriteLine(string.Format("ThreadProcess : {0}", i)); } } private static void Main() { Console.WriteLine("Application Started"); Thread thread = new Thread(ThreadProcess); Console.WriteLine("Thread Started"); thread.Start(); // 쓰레드를 시작한다. thread.Join(); // 쓰레드가 종료될 때까지 대기한다. Console.WriteLine("Thread Ended"); Console.WriteLine("Application Ended"); } |
■ Process 클래스를 사용해 윈도우즈를 종료하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using System.Diagnostics; Process.Start("shutdown.exe", "/s /f /t 00"); |
※ '/t 10' 설정시 10초 후 실행을 의미한다.
■ Process 클래스의 Kill 메소드를 사용해 프로세스를 제거하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using System.Diagnostics; string processName = "프로세스명"; Process[] processArray = Process.GetProcessesByName(processName); foreach(Process process in processArray) { process.Kill(); } |
■ Process 클래스의 GetProcesses 메소드를 사용해 프로세스 리스트를 열거하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
using System; using System.Diagnostics; foreach(Process process in Process.GetProcesses()) { Console.WriteLine ( string.Format ( "Process Name : {0}\nProcess ID : {1}\nWorking Set : {2}", process.ProcessName, process.Id, process.WorkingSet64 ) ); } |
■ Process 클래스를 사용해 중복 실행을 방지하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using System.Diagnostics; using System.Windows.Forms; if(Process.GetProcessesByName("Test").Length > 1) // "Test"는 프로세스명이다. { MessageBox.Show("이미 실행 중입니다."); } else { Application.Run(new Form()); } |
■ Process 클래스를 사용해 프로세스를 실행하는 방법을 보여준다. ▶ Process 클래스 : 프로세스 실행하기 예제 (C#)
|
using System; bool result = ExecuteProcess("notepad.exe", @"c:\test.txt"); Console.WriteLine(result); |
▶ Process 클래스 : 프로세스
더 읽기
■ Dispatcher 클래스의 Invoke 메소드를 사용해 크로스 스레드(Cross Thread)를 처리하는 방법을 보여준다. ▶ 예제 코드 (C#)
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 32 33 34 35
|
using System.Threading; ... /// <summary> /// 텍스트 설정하기 대리자 /// </summary> /// <param name="text">텍스트</param> public delegate void SetTextDelegate(string text); ... #region 텍스트 설정하기 - SetText(text) /// <summary> /// 텍스트 설정하기 /// </summary> /// <param name="text">텍스트</param> private void SetText(string text) { if(Dispatcher.Thread != Thread.CurrentThread) { SetTextDelegate setTextDelegate = new SetTextDelegate(SetText); Dispatcher.Invoke(setTextDelegate, text); } else { this.textBox.Text = text; } } #endregion |
※ Dispatcher.Invoke 구문의 Dispatcher는 DispatcherObject를
더 읽기
■ Dispather 클래스의 BeginInvoke 메소드를 사용해 크로스 스레드(Cross-Thread)를 처리하는 방법을 보여준다. ▶ 예제 코드 (C#)
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
using System; using System.Threading; using System.Windows.Controls; using System.Windows.Threading; ... private TextBlock textBlock; ... ThreadStart threadStart = delegate() { for(int i = 0; i < 10; i++) { Thread.Sleep(100); DispatcherOperation dispatcherOperation = Dispatcher.BeginInvoke ( DispatcherPriority.Normal, new Action<string, int>(SetMessage), "테스트", i ); DispatcherOperationStatus dispatcherOperationStatus = dispatcherOperation.Status; while(dispatcherOperationStatus != DispatcherOperationStatus.Completed) { dispatcherOperationStatus = dispatcherOperation.Wait(TimeSpan.FromMilliseconds(1000)); if(dispatcherOperationStatus == DispatcherOperationStatus.Aborted) { // Abort시 처리한다. } } } }; new Thread(this.threadStart).Start(); ... #region 메시지 설정하기 - SetMessage(message, value) /// <summary> /// 메시지 설정하기 /// </summary> /// <param name="message">메시지</param> /// <param name="value">값</param> private void SetMessage(string message, int value) { this.textBlock.Text = string.Format("{0} : {1}", message, value); } #endregion |
■ Dispatcher 클래스의 Invoke 메소드를 사용해 크로스 스레드(Cross Thread)를 처리하는 방법을 보여준다. ▶ 예제 코드 (C#)
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 32 33 34 35 36 37 38 39
|
using System.Threading; using System.Windows.Controls; using System.Windows.Threading; ... private TextBlock textBlock; ... ThreadStart threadStart = delegate() { for(int i = 0; i < 10; i++) { Thread.Sleep(100); Dispatcher.Invoke(DispatcherPriority.Normal, new Action<string, int>(SetMessage), "테스트", i); } }; new Thread(this.threadStart).Start(); ... #region 메시지 설정하기 - SetMessage(message, value) /// <summary> /// 메시지 설정하기 /// </summary> /// <param name="message">메시지</param> /// <param name="value">값</param> private void SetMessage(string message, int value) { this.textBlock.Text = string.Format("{0} : {1}", message, value); } #endregion |
■ Form 클래스의 CheckForIllegalCrossThreadCalls 정적 속성을 사용해 크로스 스레드 예외 발생을 방지하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using System.Windows.Forms; Form.CheckForIllegalCrossThreadCalls = false; |
■ Groove는 Microsoft Office 2007의 일부분이다. Groove는 폴더 싱크로나이저로 알려져 있고, 이것의 백그라운드 실행 파일은 GrooveMonitor.exe이다. 시스템 시작시 GrooveMonitor.exe가 자동 시작되지 않도록
더 읽기