Cách tạo , sử dụng và hủy thread trong C#

    Mô hình chuyển trạng thái của Thread:

d


Xem xét các ví dụ sau đây về thread trên ứng dụng console
Ví dụ về tạo thread:

c

using System.Threading;
namespace ConsoleApplicationThread
{
    class EntryPoint
    {
        private static void ThreadFunc()
        {
            Console.WriteLine("Hello from new thread {0}!",Thread.CurrentThread.GetHashCode());
        }
        static void Main(string[] args)
        {
            // Tao thread mới
            Thread newThread = new Thread(new ThreadStart(EntryPoint.ThreadFunc));
            Console.WriteLine("Main Thread is {0}",Thread.CurrentThread.ManagedThreadId);
            Console.WriteLine("Starting new thread…");
            // bắt đầu chạy thread
            newThread.Start();
            // Đợi thread chạy xong->đợi hệ điều hành trả về handle của thread
            newThread.Join();
            Console.WriteLine("New thread has finished");
        }
    }
}

    Cách xử dụng thông qua một chương trình đơn giản:

using System.Threading;
using System.Collections; 

namespace ConsoleApplicationThread
{
    class EntryPoint
    {
        static void Main(string[] args)

        {         

            Queue queue1 = new Queue();
            Queue queue2 = new Queue();
            // một số thao tác điền dữ liệu vào queue
            // Xử lý mỗi queue tren một thread
            Thread proc1 = new Thread( EntryPoint.ThreadFunc );
            proc1.Start( queue1 );
            Thread proc2 = new Thread( EntryPoint.ThreadFunc );
            proc2.Start( queue2 );
            //thực hiện một số lệnh khác khi thread đang chạy
            // Đợi trả về handle của thread
            proc1.Join();
            proc2.Join();

        }

            static private void ThreadFunc( object obj ) 
	{

            // Ép kiểu obj về dạng Queue
            Queue theQueue = (Queue) obj;
            // làm một số thao tác trên queue …
            Console.WriteLine("Thread {0} is running!", Thread.CurrentThread.GetHashCode());
        }
    }
}

    Hủy một thread khi thread đó đang chạy:


using System.Threading;
using System.Collections; 

namespace ConsoleApplicationThread

{
    class EntryPoint
    {       

            private static void ThreadFunc()
            {
                ulong counter = 0;
                while (true)
                {
                    try
                    {
                        Console.WriteLine("{0}", counter++);
                    }

                    catch (ThreadAbortException)

                    {
                        // Xử lý ngoại lệ trong phần này …
                        Console.WriteLine("Abort! ");
                    }
                }
            }

            static void Main(string[] args)
            {
                Thread newThread =
                new Thread(new ThreadStart(EntryPoint.ThreadFunc));
                newThread.Start();
                Thread.Sleep(2000);//đợi thread trong thời gian 2 s
                // Gọi phương thức để hủy bỏ thread
                newThread.Abort();
                //Đợi handle thread trả về
                newThread.Join();
            }
    }

}

Nguồn http://sandynguyen.wordpress.com/

Tagged:

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s

%d bloggers like this: