برنامه نویسی غیر همزمان - ارسال پیامک به صورت async

4 از 5 (6 نظر)

برنامه نویسی غیر همزمان - ارسال پیامک به صورت async یا غیر همزمان در #C

کاربر انتظار دارد برنامه ای که با ان کار می کند به سرعت به درخواست ها پاسخ بدهد و در زمان پردازش  عملیات ، freeze نشود (هنگ نکند) .

نوشتن کدهای چندنخی (Multi-threaded) یا غیرهمزمان (Asynchronous) از قدیم کاری سخت اما به شدت مورد نیاز جهت پاسخگو (Responsive) نگه داشتن نرم‌افزارها و جلوگیری از کاهش کارایی آنها بوده است. نسخه پنجم زبان برنامه‌نویسی #C مدلی ساده‌شده برای برنامه‌نویسی غیرهمزمان با معرفی دو کلیدواژه async و await ارائه کرده است.


اگر شما متدی را با استفاده از modifier (اصلاحگر) async به عنوان یک متد غیرهمزمان مشخص کرده باشید، دو قابلیت زیر فعال خواهند شد:

  • متد علامتگذاری شده با async توانایی استفاده از کلیدواژه await جهت برگزیدن نقطه‌های تعلیق را خواهد داشت. عملگر await به کامپایلر اعلام می‌کند که متد async (متد علامتگذاری شده با async) نمی‌تواند از آن نقطه جلوتر رود تا زمانی که پردازش غیرهمزمان در انتظار (awaited asynchronous process) تکمیل شود. در این حین کنترل نرم‌افزار به متد فراخوانی کننده متد async برمی‌گردد. تعلیق متد async در یک عبارت await به معنای خروج از آن متد نبوده و بلاک‌های نهایی را اجرا نمی‌کند.
  • متد علامتگذاری شده با async خود میتواند توسط متدهای فراخوانی کننده دیگر در انتظار قرار گیرد (یا اصطلاحاً await شود).


برگرفته شده از procoder.blog.ir

به عنوان یک برنامه نویس ، حتما تا حالا به این مورد برخوردید که وقتی یک درخواست طول میکشد ، دیگر برنامه قادر به انجام کار دیگری نیست تا اینکه کار قبلی انجام شود.

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

چاره کار برنامه نویسی غیر همزمان است .

در واقع در این روش ، درخواست شما شروع به پردازش می کند و تا زمانی که نتیجه ان اماده نشده ، شما می توانید عملیات دیگری را پردازش نمایید و دیگر برنامه شما هنگ نخواهد کرد.

در تصویر نمونه زیر قبل از DONE می تواند 3 عملیات را همزمان اجرا کرد.

ارسال-پیامک-async-غیر-همزمان

 


به طور مثال برای برنامه نویسی غیرهمزمان می توان وب سرویس ارسال پیامک پارس گرین را مثال زد .

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

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

البته وب سرویس پیامک پارس گرین هم به روش sync و هم به روش async  قابل استفاده است.

 

using System;

namespace ConsoleApp13
{
    class Program
    {

        static void Main(string[] args)
        {

            var api = new com.parsgreen.login.SendSMS();
            api.SendCompleted += Api_SendCompleted;

            string str = "";
            object us = null;
            api.SendAsync("31B00D62-1B3D-4925-8AA9-CV88EEDB10B1", "09120001000", "ok", str, us);
            Console.ReadKey();
        }

        private static void Api_SendCompleted(object sender, com.parsgreen.login.SendCompletedEventArgs e)
        {
            int return_val = e.Result;
            var ret_str = e.retStr;
        }
    }
}
 

کد BSC : -70951607623322020-1748081783-10684;