وباکا

آموزش تخصصی برنامه نویسی وب

برنامه سازی شبکه با سی شارپ- 10# مقدمه ای بر رشته ها (نخ ها – threads) در سی شارپ

این مقاله به شما ایده اولیه ای در مورد چگونگی ایجاد یک موضوع در C # و نحوه کار بر روی موضوع می دهد.

رشته ها یا نخ ها اغلب فرآیندهای سبک وزن نامیده می شوند. با این حال آنها فرآیند نیست. رشته یک مجموعه کوچک از دستورالعمل های اجرایی است که می تواند برای جدا کردن یک کار از یک فرآیند استفاده شود. رشته های چندگانه راه کارآمد برای به امکان اجرای موازی روی سخت افزار و تعامل کاربر به برنامه های خود می باشد.

رشته ها در سی شارپ

چارچوب Net دارای کلاس های وابسته به موضوع در فضای نام System.Threading است. مراحل زیر نشان می دهد که چگونه یک موضوع را در C # ایجاد کنید.

مرحله 1. یک شیء System.Threading.Thread ایجاد کنید.

ایجاد یک شی به System.Threading.Thread یک رشته ی مدیریت شده در محیط Net را ایجاد می کند. کلاس Thread تنها یک سازنده دارد که نماینده ThreadStart را به عنوان پارامتر می گیرد. نماینده ThreadStart در اطراف متد فراخوانی فراخوانی می شود، که وقتی شروع می شود، فراخوانی می شود.

مرحله 2: تابع برگشت (Call Back) را ایجاد کنید

این متد نقطه شروع برای رشته جدید ما خواهد بود. ممکن است یک تابع از نمونه از یک کلاس یا یک تابع استاتیک باشد. به عنوان مثال تابع، ما باید قبل از اینکه نماینده ThreadStart را ایجاد کنیم، باید قبل از ایجاد ThreadStart برای یک شیء از کلاس ایجاد کنیم . برای توابع استاتیک می توانیم به طور مستقیم از نام تابع برای کشف delegate استفاده کنیم. تابع callback باید دارای نوع داده برگشتی void و بدون پارامتر باشد. از آنجا که تابع نماینده ThreadStart اینگونه تعریف شده است.

مرحله 3: رشته را شروع کنید

می توانیم رشته تازه ایجاد شده را با استفاده از متد شروع مربوط به رشته شروع کنیم. این یک روش ناهمزمان است که از سیستم عامل درخواست می کند تا اجرای رشته را شروع کند.

مثال:
public static void MyCallbackFunction()
{
while (true)
{
System.Console.WriteLine(" Hey!, My Thread Function Running");
………
}
}
public static void Main(String []args)
{
// Create an object for Thread
Thread MyThread = new Thread(new ThreadStart (MyCallbackFunction));
MyThread.Start()
……
}

عملیات روی رشته ها

کشتن یک رشته:

میتوان یک رشته را با فراخوانی متد Abort از رشته بکشیم. فراخوانی متد Abort موجب می شود که رشته فعلی با  ThreadAbortException به پایان برسد.

MyThread.Abort();

توقف و ازسرگیری رشته:

می توانیم اجرای یک رشته را متوقف کنیم و یک بار دیگر اجرای آن را از یک رشته دیگر با استفاده از متدهای Suspend  و Resume  اجرا کنیم.
MyThread.Suspend()
// causes suspend the Thread Execution.
MyThread.Resume()
// causes the suspended Thread to resume its execution.

حالت رشته ها :

یک موضوع می تواند در یکی از حالت های زیر باشد.

Unstarted: رشته در زمان اجرای زبان مشترک ایجاد شده است اما هنوز آغاز نشده است.
Running: پس از یک موضوع، شروع روش را فراخوانی می کند
WaitSleepJoin : پس از یک رشته انتظار یا خواب یا متصل را فراخوانی می کند.
Suspended : رشته به فراخوانی Suspend پاسخ داده است.
Stopped : رشته متوقف شده است، یا به طور معمول و یا قطع شده است.

ما می توانیم وضعیت فعلی یک رشته را با استفاده از ویژگی ThreadState بررسی کنیم.

اولویت رشته ها:

ویژگی ThreadPriority  از کلاس Thread برای تعیین اولویت رشته استفاده می شود. یک رشته ممکن است یکی از مقادیر زیر را به عنوان اولویت آن داشته باشد:  Lowest (پایینترین) ، BelowNormal(پایین زیر عادی)، Normal (عادی)، AboveNormal (فوق العاده)، Highest(بالاترین). ویژگی اولویت پیش فرض برای یک رشته Normal است.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

فهرست مطالب