سلام
تاپیک عنوان ساده داشت وندیده بودم... عجب بحث داغی ایجاد شده
البته تمام پست های دوستان را نخواندم الآن ساعت 0215 بامداد است و دارم p30world میخوانم
اگر بخواهم یک راه ساده ومطمئن را استفاده کنم و مدام هم به تداخل ریسمان و چند کلیک و... فکر نکنم احتمالا در نگاه اول کد زیر را خواهم نوشت ...
نگه داری یک عدد int به عنوان نسخه در پاره ای موارد مشابه کمک زیادی میکند، خود مایکروسافت هم در بخشی از کدهای داخلی Enumerable ها و مقابله با مشکلات چند ریسمانی از کدهای مشابه مفهوم version استفاده کرد. بطور معمول به عنوان بخشی از یک جور راه حل روتین قابل اعمال است و زیاد نیاز به فکر کردن به جنبه های مختلف ندارد.
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
(زیاد هم نگران پرشدن int نباشید، اگر کاربر شما هر ثانیه یک کلیک کند و این کار را پیوسته بدون خواب وخوراک در 24 ساعت روز و 7 روز هفته و... ادامه دهد، 60 سال طول میکشد! برای ساعتی 100 کلیک مداوم 2000 سال و در عمل وبا اعداد واقعی چند هزار سالی طول میکشد!)
برای WPF همانطور که در کد دوستان بود بجای BeginInvoke باید از Dispatcher استفاده شود.
در خصوص volatile هم در مورد دسترسی به متغییر های ساده ای که مقدار مستقیم توسط ریسمان های متفاوت امکان تغییر دارد، بهتر است استفاده شود، مثال های ساده ای میتوان بیان کرد که استفاده وعدم استفاده تفاوت کاملا مشهود دارد ولی در نهایت تصمیم شرایط و محل واستفاده به عهده برنامه نویس ودر تخصص او است، به عنوان نمونه در کد فوق نباید استفاده شود و استفاده از کلاس Interlocked بسیار مناسب ومطمئن تر عمل میکند.
شب خوش.