0329 스레드 복습

2021. 3. 29. 23:58C#/과제

public class App
    {
        public App() 
        {
            Thread t;
            ThreadStart ts = new ThreadStart(() =>
             {
                 for (int i = 0; i < 10; i++)
                 {
                     Console.WriteLine("Hello");
                     Thread.Sleep(500);
                 }
             });
            //스레드 인스턴스화
            t = new Thread(ts);
            t.Start();

            Thread t2 = new Thread(new ThreadStart(this.Hi));
            t2.Start();
        }
        private void Hi() 
        {
            for (int i = 0; i < 10; i++) 
            {
                Console.WriteLine("Hi");
                Thread.Sleep(500);
            }
        }
    }

Try/Catch/Finally

예외 처리를 위해 세 가지 키워드를 쓴다.

try {//예외가 발생할 만한 코드 작성}

catch {//예외가 발생할 때 처리해야 할 코드 블록}

finally {//예외가 발생하거나 정상일 때 모두 처리해야 할 코드 블록}

 

 

Abort();

public class App
    {
        public App() 
        {
            Thread t = new Thread(new ThreadStart(this.TestThread));
            t.Start();

            Thread.Sleep(5000);
            t.Abort("Information from Main.");
        }
        private void TestThread() 
        {
            while (true) 
            {
                Console.WriteLine("Thread is running...");
                Thread.Sleep(1000);
            }
        }
    }//1초의 간격으로 메서드 실행하다가 5초 후 메서드 멈춤

 

public class App
    {
        Thread thread1;
        Thread thread2;
        public App() 
        {
            thread1 = new Thread(() =>
            {
                Console.WriteLine(thread1.ThreadState);
                Thread.Sleep(100);
                thread1.Abort();
                Thread.Sleep(100);
            });
            thread1.Name = "Thread1";
            Console.WriteLine(thread1.ThreadState);
            thread1.Start();

            thread2 = new Thread(() =>
              {
                  while (true)
                  {
                      Thread.Sleep(5000); //5초가 지난 후 메서드 멈춤
                      Console.WriteLine(thread1.ThreadState);
                      thread2.Abort();
                  }
              });
            thread2.Start();
        }
    }

 

'C# > 과제' 카테고리의 다른 글

0322 delegate 연습  (0) 2021.03.23
0317 interface+abstract+stack+queue  (0) 2021.03.17
0316 컬랙션 과제  (0) 2021.03.17
0314 클래스와 메서드  (0) 2021.03.15
0311 Class+맴버 변수+메서드 호출 연습  (0) 2021.03.11