Computer >> Máy Tính >  >> Lập trình >> C#

Các phương thức Join, Sleep và Abort trong C # Threading

Tham gia

Chặn luồng đang gọi cho đến khi một luồng kết thúc, trong khi tiếp tục thực hiện bơm COM và SendMessage tiêu chuẩn. Phương thức này có các dạng nạp chồng khác nhau.

Ngủ

Làm cho chuỗi tạm dừng trong một khoảng thời gian.

Hủy bỏ

Phương thức Abort được sử dụng để hủy các chuỗi.

Hãy để chúng tôi xem một ví dụ về Join () trong luồng -

Ví dụ

using System;
using System.Diagnostics;
using System.Threading;
namespace Sample {
   class Demo {
      static void Run() {
         for (int i = 0; i < 2; i++)
         Console.Write("Sample text!");
      }
      static void Main(string[] args) {
         Thread t = new Thread(Run);
         t.Start();
         t.Join();
         Console.WriteLine("Thread terminated!");
         Console.Read();
      }
   }  
}

Hãy để chúng tôi xem một ví dụ về abort () và sleep () trong Luồng.

Ví dụ

using System;
using System.Threading;
namespace Demo {
   class ThreadCreationProgram {
      public static void CallToChildThread() {
         try {
            Console.WriteLine("Child thread starts");
            // do some work, like counting to 10
            for (int counter = 0; counter <= 10; counter++) {
               Thread.Sleep(500);
               Console.WriteLine(counter);
            }
            Console.WriteLine("Child Thread Completed");
         } catch (ThreadAbortException e) {
            Console.WriteLine("Thread Abort Exception");
         } finally {
            Console.WriteLine("Couldn't catch the Thread Exception");
         }
      }
      static void Main(string[] args) {
         ThreadStart childref = new ThreadStart(CallToChildThread);
         Console.WriteLine("In Main: Creating the Child thread");
         Thread childThread = new Thread(childref);
         childThread.Start();
         //stop the main thread for some time
         Thread.Sleep(2000);
         //now abort the child
         Console.WriteLine("In Main: Aborting the Child thread");
         childThread.Abort();
         Console.ReadKey();
      }
   }
}