آموزش Async در سیشارپ 5 - بخش سوم
سه شنبه, ۵ فروردين ۱۳۹۳، ۱۲:۵۵ ق.ظ
آشنایی با Task (ادامه)
نوع دوم) انجام عملیاتی دیگر پس از اتمام یک Task
در مثال قبل تنها اجرای یک Task مهم بود و پایان آن اهمیتی نداشت. فرض کنید اینبار میخواهیم پس از پایان یک Task کار دیگری (معمولا وابسته به عملیات Task قبلی) انجام دهیم. برای این کار ابتدا لازم است که از پایان یافتن Task با خبر شویم. خوشبختانه دات نت این امکان را فراهم کرده است و شما تنها کافیست به Task بگویید که پس از پایان چه کاری انجام دهد.
2 تابع داریم، یکی DoJob که Task اصلی آن را اجرا میکند و دیگری AfterJob که قرار است بعد از پایان DoJob اجرا شود:
public void DoJob()
{
//Body
}
public void AfterJob()
{
//Body
}
ابتدا یک ارجاع به Task درحال اجرا ایجاد میکنیم:
Task t = Task.Run(() => DoJob());
اکنون تابع AfterJob را برای اجرا بعد از پایان یافتن DoJob به t نسبت میدهیم:
t.ContinueWith((tsk) => AfterJob());
که tsk همان ارجاع به Task اصلی است که در اینجا برای استفادههای بعدی Capture میشود.
هر 2 تابع DoJob و AfterJob میتوانند هرگونه آرگومان ورودی داشته باشند. در مورد خروجی توابع در پستهای بعدی بحث خواهیم کرد.
میشه یه منبع خوب واسه سی شارپ برای شروع و ادامه حرفه ای معرفی کنین؟
اگه ممکنه منابعی که خودتون استفاده کردینو بگین
خیلی ممنون