ویژگی های کمتر استفاده شده در NET. - بخش ششم
#Execute VB code via C می توان از طریق #C، ماکروهای Visual Basic مورد استفاده‌ی در Office را تولید کرد. static void AddChartButton( Workbook workBook, Worksheet xlWorkSheetNew, Range currentRange, int macroId, int startRow, int endRow, int startCol, int endCol, string butt ...
پشتیبانی توکار از ایجاد کلاس‌های Singleton از دات نت 4 به بعد
روش‌های زیادی برای ایجاد یک وهله‌ی Singleton وجود دارند. وهله‌ای که در طول عمر یک برنامه، تنها یکبار ایجاد شده و حفظ می‌شود. برای مثال شاید متداول‌ترین حالت آن که در بسیاری از کدها دیده می‌شود، تعریف یک متغیر استاتیک در کلاس، غیرعمومی تعریف کردن سازنده‌ی کلاس و وهله سازی این فیلد استاتیک در صورت نال بودن آن است: public class WrongSingleton { static WrongSingleton _instance; WrongSingleton() { ...
اثبات قانون مشاهده‌گر در برنامه نویسی
امروز حین کدنویسی به یک مشکل نادر برخورد کردم. کلاسی پایه داشتم (مثلا Person) که یک سری کلاس دیگر از آن ارث بری میکردند (مثلا کلاس‌های Student و Teacher).در اینجا در کلاس پایه بصورت اتوماتیک یک ویژگی(Property) را روی کلاس‌های مشتق شده مقدار دهی میکردم؛ مثلا به این شکل: public class Person { public Person() { personId= this.GetType().Name + (new Random()).Next(1, int.MaxValue); ...
دسترسی به Collectionها در یک ترد دیگر در WPF
اگر در WPF سعی کنیم آیتمی را به مجموعه اعضای یک Collection مانند یک List یا ObservableCollection از طریق تردی دیگر اضافه کنیم، با خطای ذیل متوقف خواهیم شد: This type of CollectionView does not support changes to its SourceCollection from a thread different from the Dispatcher thread راه حلی که برای آن تا دات نت 4 در اکثر سایت‌ها توصیه می‌شد به نحو ذیل است: Adding to an ObservableCollection from a background thread ...
اصول برنامه نویسی موازی درNET. نسخه 4 بخش اول - 2
تنظیم وضعیت برای یک Task در مثال ذکر شده در قسمت قبل هر چهار Task یک عبارت را در خروجی نمایش دادند حال می‌خواهیم هر Task پیغام متفاوتی را نمایش دهد.برای این کار از کلاس زیر استفاده می‌کنیم : System.Action<object> ...
اصول برنامه نویسی موازی درNET. نسخه 4 بخش اول - 1
بدون هیچ مطلب اضافی به سراغ اولین مثال می‌رویم. قطعه کد زیر را در نظر بگیرید : 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 ...