System.Timers.Timer এর জন্য আলাদা থ্রেডে সিঙ্ক্রোনাইজিং অবজেক্ট সেট না করা থাকলে।
static System.Timers.Timer DummyTimer = null;
static void Main(string[] args)
{
try
{
Console.WriteLine("Main Thread Id: " + System.Threading.Thread.CurrentThread.ManagedThreadId);
DummyTimer = new System.Timers.Timer(1000 * 5);
DummyTimer.Enabled = true;
DummyTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnDummyTimerFired);
DummyTimer.AutoReset = true;
DummyTimer.Start();
Console.WriteLine("Hit any key to exit");
Console.ReadLine();
}
catch (Exception Ex)
{
Console.WriteLine(Ex.Message);
}
return;
}
static void OnDummyTimerFired(object Sender, System.Timers.ElapsedEventArgs e)
{
Console.WriteLine(System.Threading.Thread.CurrentThread.ManagedThreadId);
return;
}
আউটপুট আপনি দেখতে পাচ্ছেন যে ডামিটাইমারের 5 সেকেন্ডের ব্যবধানে গুলি চালানো হয়েছে:
Main Thread Id: 9
12
12
12
12
12
...
সুতরাং, যেমন দেখা গেছে, অনডম্মিটাইমারফায়ার্ড ওয়ার্কার্স থ্রেডে মৃত্যুদন্ড কার্যকর করা হয়েছে।
না, আরও জটিলতা - যদি আপনি 10 এমএস বলতে বিরতি হ্রাস করেন,
Main Thread Id: 9
11
13
12
22
17
...
এটি হ'ল কারণ যদি পরবর্তী টিকটি বহিস্কার করা হয় তবে যদি অনডমিটাইমারফায়ার এর পূর্ব নির্বাহ সম্পাদন না করা হয়, তবে। নেট এই কাজটি করার জন্য একটি নতুন থ্রেড তৈরি করবে।
বিষয়গুলিকে আরও জটিল করে তোলা, "সিস্টেম.টাইমার্স.টাইমার ক্লাস এই দ্বিধাটি মোকাবিলার সহজ উপায় সরবরাহ করে provides এটি একটি সর্বসাধারণের সিঙ্ক্রোনাইজিংঅবজেক্ট সম্পত্তি প্রকাশ করে this আপনার বর্ধিত ইভেন্ট হ্যান্ডলারের কোডটি একই থ্রেডে চালিত হয় যার উপরে সিঙ্ক্রোনাইজিং অবজেক্ট ইনস্ট্যান্ট করা হয়েছিল ""
http://msdn.microsoft.com/en-us/magazine/cc164015.aspx#S2