در قسمت قبل دیدیم که انجام کارهای همزمان، با Objectهایی که به اصطلاح Thread Safe نیستند (مانند DbContext) خروجی چندان جالبی ندارد و برای مثال اگر در یک Service یک DbContext را Inject کنیم (مثلا با Constructor injection) و از آن در متدی استفاده کنیم که آن متد یا با TPL یا RX و ... به صورت چندتایی و همزمان اجرا شود، DbContext به مشکل میخورد ؛ یعنی نمیتوان یک وهله از DbContext را بین چند Thread همزمان پردازش موازی، به اشتراک گذاشت. ...
آیا تا به حال لیستی از دیتا داشتهاید که بخواهید بر روی آنها کاری را انجام دهید؟ مثلا لیستی از مشتریان که باید برای تک تک آنها Pdf ای را بسازید، یا لیستی از مشتریان که باید برای تک تک آنها بیمه نامه صادر کنید، یا مثلا لیست اطلاعات بلیطهای قابل فروش را گرفتهاید و برای تک تک آنها میخواهید کمیسیون حساب کنید و ... در اکثر مواقعی کاری که برای تک تک آیتمها قرار است انجام شود، ساده است و با استفاده از یک حلقه foreach کار تمام میشود. ...
حقیقتا تا این لحظه تو پروژه ای استفاده نکردم ولی فکر میکنم یادگیری و استفادش ضروری باشه. ظهورش برمیگرده به .net1 با عنوان Threading. اما کار با Threading خیلی مشکله. من که اینطوری فکر میکنم. حالا با اصلاح کلاس Threading و آمده task خیلی بهتر شده.
گام اول:Threading.Tasks را بعنوان namespace اضافه کنید
یک مثال: این loop در نظر بگیرید
Private Sub work()
While True
End While
End Sub
...
در حین جستجوی مطلبی در فورومهای ASP.NET، مطلبی رو از یکی از اعضای تیم ASP.NET دیدم که خلاصهاش به این شرح است:
اگر چندین درخواست با یک Session ID به موتور پردازشی ASP.NET وارد شوند و حداقل یکی از آنها به صورت سشنی خواندنی+نوشتنی علامت گذاری شده باشد، اینگونه درخواستها serialized میشود. به این معنا که این نوع درخواستها در صف قرار داده شده و به ترتیب رسیدن، اجرا میشوند. این کار هم از این جهت لازم است که چندین ...
بدون هیچ مطلب اضافی به سراغ اولین مثال میرویم. قطعه کد زیر را در نظر بگیرید :
using System;
using System.Threading.Tasks;
namespace Listing_01 {
class Listing_01 {
static void Main(string[] args) {
Task.Factory.StartNew(() => {
Console.WriteLine("Hello World");
});
// wait for input before exiti ...