Another generic Singleton class:
منبع : http://www.sanity-free.org/132/generic_singleton_pattern_in_csharp.html
public static class Singleton<T> where T : new()
{
static Mutex mutex = new Mutex();
static T instance;
public static T Instance
{
get
{
mutex.WaitOne();
if(instance == null)
{
instance = new T();
}
mutex.ReleaseMutex();
return instance;
}
}
}
نقل قول: کنترل کردن فرمها
1) می توین یکی متغیر Static در کلاس فرم باری شمارش تعداد فرم باز شده، معرفی کنی که در هنگام نمونه سازی از فرم به اون افزوده می شود (در هر حال تعداد فرمهای باز شده را دارد).در این حالت در لحظه نمونه سازی،فرم اول باید تست کنه ببینه که به حداکثر نرسیده باشد.در ضمن اگر به حداکثر رسیده باشد باید چه کار کند (مقدار null برگرداند یا .... این سئوال رو شما به عنوان طراح باید جواب بدی)
2) در مورد « اين پيغام خطا در هنگام Show كردن مجدد» فرم هم حق با شما است چون وقتی فرم بسته می شود،در واقع ناید نابود شود ولی نابود نمی شود و هنوز کلاس singelton یک نمونه از اون رو داره.برای این کار باید فرایندی رو در نظر بگیری که در هنگام بسته شدن فرم به شکل اتوماتیک متغیر instance به null تبدیل شود (کافی رویداد formclosed رو بگیری و ...)