کش شدن کوئری های Dapper


زمانی که از Dapper برای خواندن اطلاعات, افزودن اطلاعات و ... استفاده میکنید, در کتابخانه Dapper کوئری نوشته شده شما در یک ConcurrentDictionary نگهداری میشود که اگر مجددا همان کوئری اجرا شد, پروسس لازم برای اجرای کوئری مجدد اجرا نشود. ....
ادامه مطلب

حذف کردن async await


به طور معمول متدهایی که به صورت async نوشته میشوند, از متدهای sync سریعتر اجرا نمیشوند و فقط باعث میشوند که سیستم بتواند به ریکوئست های بیشتری پاسخ بدهد. در مطلب نحوه کار Thread pool این موضوع ارائه شد. همچنین در سایت sharplab.io میتوانید کدهایی که به صورت async نوشته میشوند را مشاهده کنید. ....
ادامه مطلب

در پروداکشن به خط خطا نباید اطمینان کرد


چند روز پیش توی یکی از پروژه ها که کار میکردم روش, یک خطای Object reference not set to an instance of an object صادر میشد و خطی که خطا صادر شده بود توی لاگها خط 61 بود. وقتی خط 61 رو چک کردم اصلا امکان خطا وجود نداشت, فقط یک کلاس نمونه سازی شده بود در خط 61. ....
ادامه مطلب

تفاوت throw و throw ex در #C


throw مجددا خطا را صادر میکند با همان StackTrace قبلی. دقیقا خطای صادر شده را مجددا صادر میکند. اما اگر از throw ex استفاده کنید بازم هم همان خطای قبلی را صادر میکند اما با یک تفاوت, StackTrace را ریست میکند!. برای مثال در کد زیر در متد DoSomethig یک عملیات تقسیم بر صفر انجام میدهیم که باعث بروز ....
ادامه مطلب

تفاوت async و sync


در مطلب قبلی نحوه کار Thread Pool ارائه شد. در این مطلب به بررسی تفاوت بین متدهای async و sync میپردازیم که فرق بین این دو نوع چیست و چرا باید از متدهای async استفاده کنیم. زمانی که شما یک متد را به صورت sync مینویسید و به طور مثال میخواهید عملیات ذخیره کردن دیتاهارا انجام دهید ....
ادامه مطلب

نحوه کار Thread pool در #C


زمانی که درخواستی به برنامه Net. ارسال میشود, برای هندل کردن درخواست یک Thread ایجاد میشود. زمانی که یک Thread ایجاد میشود مقداری منابع مانند مموری به Thread اختصاص می یابد. و در نهایت زمانی که کار انجام میشود Garbage Collector, ابجکت ایجاد شده ب ....
ادامه مطلب

نحوه استفاده از implicit operator و explicit operator در #C


در زبان سی شارپ به طور معمولی نمیتوانید کلاس ها را به یک متغییر از نوع int و یا هر نوع دیگری تبدیل و یا cast کنید و همچنین عملیات برعکس آن. به طور پیشفرض نمیتوانید یک عدد از نوع int را به یک یک کلاس انتساب ....
ادامه مطلب