آموزش Async و Await در سی شارپ

لرن سایت,آموزش برنامه نویسی سی شارپ,آموزش طراحی سایت,آموزش برنامه نویسی اندروید,آموزش SQL c# android php jquery,قالب سایت

شما اینجا هستید : صفحه اصلی

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

آموزش Async و Await در سی شارپ

async و wait سی شارپ

امروزه برنامه نویسی ناهمگام (Asynchronous) نزد دولوپر ها بسیارمحبوب شده است.

وقتی ما با Ui سروکار داریم و یک متد که زمان اجرای آن طولانیست ( مثل خواندن یک فایل بزرگ و ذخیره آن در پایگاه داده) را در رویداد کلیکِ یک دکمه میگذاریم زمانی که روی آن دکمه کلیک شود رابط کاربری اپلیکیشن قفل شده و به اصطلاح هنگ میکند ، زیرا رابط کاربری و بقیه متد ها در برنامه نویسی همگام (Synchronous) در یک نخ (Thread) از سی پی یو اجرا میشوند پس رابط کاربری تا زمانی که فعالیت متد خاتمه نیابد پاسخی به کاربر نمیدهد.

برنامه نویسی ناهمگام در این شرایط بسیار کار آمد است ، زیرا در این روش رابط کاربری و متد ها به هم متکی نبوده و متد ها به صورت جداگانه اجرا میشوند.

async و await دو برچسب هستند که مشخص میکنند در کدام بخش کد پاسخ دهی باید بعد از اتمام کار از سر گرفته شود.

خب ، وقت این است که با چند مثال کاربردی کاربرد برنامه نویسی ناهمگام را درک کنیم :

مثال های ساده برای درک Async و Await در سی شارپ

مثال 1 :

در این مثال ما دو متد داریم که به هم متکی نیستند:

کد:

در کد بالا متد یک و متد دو به هم متکی نیستند و ما از متد Main آن هارا صدا میزنیم و میبینیم که متد ها کاری به یکدیگر ندارند.

خروجی:

خروجی

خب ، حالا به سراغ مثال بعد برویم ، فرض کنید ما یک متد سه هم داریم که متد یک متکی است.

مثال 2 :

در این مثال متد 1 طول یک عدد صحیح را  به ما بر میگرداند ، که ما به صورت ورودی آن را به عنوان طول به متد 2 میدهیم ( پس متد 2 نیاز به یک ورودی دارد که متد 1 آن را به ما بر میگرداند)

اینجا ما باید از کلمه await قبل از دادن طول عدد به عنوان ورودی استفاده کنیم که لازمه استفاده از await ، استفاده از کلمه async در متد صدا زننده است.

ما نمیتوانیم کلمه await را بدون async استفاده کنیم ، و اگر ما در متد Main کلمه Async را استفاده کنیم به این ارور میخوریم:

پس ما یک متد به نام callMethod تعریف میکنیم و در آن متد های خود را به ترتیب صدا میزنیم:

کد:

 

مطلب پیشنهادی :  کدام سبک برنامه نویسی را انتخاب کنیم؟

در کد بالا ، متد 3 یک ورودی میخواهد که وابسته به متد یک هست ، اینجاست که کلمه await نقش مهمی را برای صبر کردن برای اتمام و متد 1 و دادن آن به عنوان ورودی به متد 3 ایفا میکند.

خروجی:

خروجی

یک مثال واقعی

async و await از دات نت فریمورک 4.5 به بعد پشتیبانی میشوند که ما میتوانیم در پروژه های خود از آن ها استفاده کنیم.

برخی از Api  های پیشفرض در سی شارپ مانند : اچ تی تی پی کلاینت ، استریم ها و ….  Async هستند که با کلمه Async بعد از نام متد میتوان آن هارا تشخیص داد .

دراین مثال ما قصد داریم که کل کاراکتر های یک فایل متنی بزرگ را بخوانیم و تعداد کل کاراکتر های موجود در آن فایل را بدست آوریم.

 

کد:

 

در مثال بالا ما از متد ReadFile برای خواندن طول کاراکتر های فایل خود استفاده میکنیم.

در فایل sampleText.txt ما کارکتر های زیادی وجود دارد و خواندن تمام آن ها زمان زیادی میبرد.

 

در اینجا ، ما از async استفاده میکنیم ، به همین دلیل برنامه منتظر متد برای دریافت خروجی  نمانده و بقیه خط های کد را اجرا میکند ، اما در کد زیر ما از await استفاده کردیم تا برنامه منتظر خروجی بماند:

بعد از آن بقیه خظوط به صورت پیوسته اجرا میشوند

خروجی

این نکات کلیدی را همیشه باید به یاد داشته باشیم:

اگر ما از کلمه await در متد خود استفاده نکنیم برنامه ما به صورت معمولی اجرا شده و کمپایلر آن را به عنوان همگام در نظر میگیرد ( کمپایلر یک اخطار در این زمینه به ما میدهد اما هیچ اروری به ما داده نمیشود)

بدین ترتیب ما میتوانیم از دو کلمه کلیدی async و await در سی شارپ به صورت ناهمگام کد بزنیم .

امیدوارم از این مطلب استفاده کافی را برده باشید ، حالا نوبت شماست ، نظرات و سوالات خود را در رابطه با async و await در بخش نظرات همین مطلب مطرح کنید تا توسط کارشناسان ما پاسخ خود را دریافت کنید.

 

 

 

 

 

اگه مطلب خوشتون اومد پس لطفا به اشتراک بذارین تا بقیه هم خوششون بیاد :)

نظرات

دیدگاه بگذارید

avatar
  Subscribe  
اطلاع رسانی از :