CSCIENCE

CSCIENCE

۲ مطلب در فروردين ۱۳۹۳ ثبت شده است

آشنایی با 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 می‌توانند هرگونه آرگومان ورودی داشته باشند. در مورد خروجی توابع در پست‌های بعدی بحث خواهیم کرد.
۵ موافقین ۰ مخالفین ۰ ۰۵ فروردين ۹۳ ، ۰۰:۵۵
cscience

امسال هم مثل سال گذشته برای تبریک سال نو، یک پازل علوم کامپیوتری طراحی کردم. پازل به این صورته که به شما یکسری سرنخ داده میشه و شما باید با استفاده از اون‌ها، پیام مخفی شده رو پیدا کنید.


Happy [undirected] Graph!
I've tried to write my message at the lowest possible cost from 1 to 14.

[A key]
CHYPYANAWEEPOUR

[You all know the following format]
1 2 500
1 5 100
1 4 1500
2 11 100
2 6 100
3 5 100
3 11 100
4 8 200
4 10 300
5 14 2000
6 9 100
6 13 1500
7 10 90
7 14 3
8 9 200
8 13 1500
12 10 2000
12 14 1500

پاسخ در ادامه مطلب
۱ موافقین ۰ مخالفین ۰ ۰۱ فروردين ۹۳ ، ۰۱:۵۰
cscience