Xử lý đa luồng trong C#

Hướng dẫn chi tiết về cách xử lý đa luồng trong C# giúp bạn tận dụng hiệu quả tài nguyên của CPU, đồng thời tăng hiệu suất của ứng dụng thông qua việc thực thi nhiều công việc đồng thời.

Bài viết này sẽ giới thiệu cách tạo và quản lý luồng trong C# bằng cách sử dụng ThreadTask. Chúng ta sẽ thực hiện các ví dụ minh họa giúp bạn hiểu rõ cách ứng dụng đa luồng vào lập trình.

Mã C#:

using System;
using System.Threading;
using System.Threading.Tasks;

class Program
{
    // Phương thức chạy trên luồng riêng biệt
    static void PrintNumbers()
    {
        for (int i = 1; i <= 5; i++)
        {
            Console.WriteLine($"Số: {i}");
            Thread.Sleep(1000); // Tạm dừng 1 giây
        }
    }

    static async Task PrintNumbersAsync()
    {
        await Task.Run(() => PrintNumbers());
    }

    static void Main(string[] args)
    {
        Console.WriteLine("Bắt đầu xử lý đa luồng...");

        // Tạo một luồng mới
        Thread thread = new Thread(PrintNumbers);
        thread.Start();

        // Sử dụng Task để xử lý bất đồng bộ
        Task task = PrintNumbersAsync();
        
        // Chờ thread kết thúc
        thread.Join();
        task.Wait();

        Console.WriteLine("Xử lý hoàn tất.");
    }
}

Giải thích chi tiết từng dòng code:

  1. PrintNumbers(): Một phương thức chạy trên một luồng riêng biệt, in ra các số từ 1 đến 5 và tạm dừng 1 giây giữa mỗi lần in.
  2. PrintNumbersAsync(): Phương thức bất đồng bộ sử dụng Task.Run để thực thi PrintNumbers.
  3. Main():
    • Tạo một Thread mới và bắt đầu thực thi PrintNumbers.
    • Sử dụng Task để chạy PrintNumbersAsync.
    • thread.Join(): Đợi cho đến khi luồng hoàn tất.
    • task.Wait(): Đợi Task hoàn tất.

Yêu cầu hệ thống:

  • C# 7.0 hoặc mới hơn
  • .NET Core 2.1 hoặc .NET Framework 4.5 trở lên

Cách cài đặt các thư viện để chạy được đoạn mã C# trên:

Cần cài đặt .NET Core SDK từ https://dotnet.microsoft.com/download.

Lời khuyên:

  • Nên sử dụng Taskasync/await khi có thể để đơn giản hóa việc quản lý luồng.
  • Hạn chế tạo quá nhiều luồng đồng thời vì có thể làm chậm hiệu suất.


Các Hướng Dẫn Cùng Chủ Đề Đang Xem

Cách INSERT dữ liệu vào database MySQL bằng C#

Hướng dẫn cách sử dụng Prepared Statements trong C# để chèn dữ liệu vào một bảng trong database MySQL một cách an toàn và hiệu quả.
Truyền Authentication Header Token khi POST dữ liệu tới API bằng C#

Hướng dẫn cách truyền Authentication Header Token khi gửi yêu cầu POST tới API bằng ngôn ngữ lập trình C# bằng cách sử dụng HttpClient và Bearer Token.
Cách SELECT dữ liệu từ database MySQL bằng C#

Hướng dẫn cách sử dụng C# để truy vấn dữ liệu từ một bảng trong database MySQL bằng Prepared Statements với nhiều tham số, giúp đảm bảo an toàn và hiệu quả.
Gửi đoạn mã JavaScript vào website bằng Selenium trong C#

Hướng dẫn cách sử dụng Selenium trong C# để gửi một đoạn mã JavaScript vào một website mở trong trình duyệt Chrome. Bài viết sẽ cung cấp mã mẫu và giải thích chi tiết từng bước.
Tổng hợp tất cả các cách nối chuỗi trong C#

Hướng dẫn chi tiết về tất cả các cách nối chuỗi trong C#, bao gồm sử dụng toán tử nối chuỗi, phương thức nối chuỗi, và các cách tiếp cận hiệu quả khác.
Chức năng thường dùng khi sử dụng Selenium Chrome trong C#

Bài viết này sẽ liệt kê và mô tả các chức năng thường dùng khi sử dụng Selenium Chrome trong C#. Những chức năng này giúp bạn tự động hóa các tác vụ trên trình duyệt Chrome một cách hiệu quả.
Cách DELETE dữ liệu từ database MySQL bằng C#

Hướng dẫn cách sử dụng Prepared Statements trong C# để xóa dữ liệu từ một bảng trong database MySQL một cách an toàn và hiệu quả bằng cách sử dụng nhiều tham số.
Cách chuyển đổi chữ cái Unicode có dấu thành không dấu trong C#

Hướng dẫn chi tiết cách chuyển đổi các ký tự Unicode có dấu tiếng Việt thành ký tự không dấu bằng C#.
Xác thực JSON Web Token (JWT) trong C#

Hướng dẫn cách triển khai xác thực JSON Web Token (JWT) trong C#. Bài viết sẽ chỉ ra cách tạo, ký và xác thực JWT để bảo mật API và xác thực người dùng.
Cách GET dữ liệu JSON từ API bằng C#

Hướng dẫn cách lấy dữ liệu JSON từ một API bằng C#, sử dụng lớp HttpClient và thư viện Newtonsoft.Json để xử lý dữ liệu.

Đã thêm vào giỏ hàng