خلاصه دستورالعمل های برنامه نویسی غیرهمزمان
نام: Avoid asyinc void - اجتناب کردن از async void
نام: Async all the way - همیشه از async استفاده کنید
نام: Configure context - تنظیم context
(غیرهمزمان) Async راه انجام کارها
بهترین تمرین
کلمات کلیدی async/await برای کارهای مرتبط با IO bound tasks (ارتباطات شبکه ای ، ارتباط بانک اطلاعاتی ، درخواست http ، و غیره) است. اما استفاده برای کارهای مرتبط computational bound tasks (چرخش از لیست عظیم ، پردازش تصاویر بزرگ و غیره) مناسب نسیت. زیرا thread نگهدارنده را به قسمت thread pool منتقل می کند و CPU/cores های موجود برای پردازش آن کارها(tasks) دخالتی ندارند.بنابراین ، ما باید از استفاده از Async/Await برای کارهای محاسباتی (computional bound tasks) خودداری کنیم.
برای رسیدگی به کارهای محاسباتی (computational bound tasks)،ترجیح می دهید از Task.Factory.CreateNew با TaskCreationOptions که LongRunning است ،استفاده کنید.این یک thread پس زمینه جدید را برای پردازش یک کار محدود محاسباتی سنگین و بدون رها کردن آن بهthread pool شروع می کند تا اینکه کار انجام شود.
ابزار های خودت را بشناس
چیزهای زیادی برای آموختن در مورد async و await وجود دارد و طبیعی است که کمی از منحرف شوید.در اینجا سریع به راه حل های مربوط به مشکلات رایج اشاره می شود.
راه حل هایی برای مشکلات مشترک Async
سند Task-based Asynchronous Pattern (TAP) را بخوانید.بسیار خوب نوشته شده است ،و شامل راهنمایی در مورد طراحی API و استفاده صحیح از async / await (از جمله لغو و گزارش پیشرفت).
بسیاری از تکنیک های جدید منتظر await وجود دارد که باید به جای تکنیک های قدیمی مورد استفاده قرار گیرند.اگر در کد async جدید خود هر یک از این مثال های قدیمی را دارید ، این کار را اشتباه انجام می دهید (TM):
Source
https://gist.github.com/jonlabelle/841146854b23b305b50fa5542f84b20c