การใช้งาน ParameterizedThreadStart เพื่อจำกัดจำนวนครั้งในการวนลูป while

ในตัวอย่างนี้ใช้คอนสตรัคเตอร์ Thread(ThreadStart) มาดูที่เวอร์ชันของโค้ดที่ใช้ ParameterizedThreadStart ในการส่งค่าที่จำกัดจำนวนครั้งของการวนลูป while:

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

class Program
{
    static void Main()
    {
        Console.WriteLine("Hello, World!");
        var bgThread = new Thread((object? data) =>
        {
            if (data is null) return;
            int counter = 0;
            var result = int.TryParse(data.ToString(), out int maxCount);
            if (!result) return;
            while (counter < maxCount)
            {
                Console.WriteLine($"Background thread working... Iteration: {counter + 1}");
                Thread.Sleep(100);
                counter++;
            }
        });

        bgThread.IsBackground = true;
        bgThread.Start(5);  // กำหนดให้วนลูป 5 ครั้ง
        for (int i = 0; i < 10; i++)
        {
            Console.WriteLine("Main thread working...");
            Task.Delay(500).Wait();
        }
        Console.WriteLine("Done!");
        Console.ReadKey();
    }
}