PDA

View Full Version : Singlton Pattern



In_Chan_Nafar
دوشنبه 05 شهریور 1386, 15:10 عصر
با عرض سلام خدمت دوستان
من یه فرم MDI دارم که دارای چندتا فرم MDIParent هست. حالا وقتی که از منو یکی از فرم ها رو صدا می کنم فرم New شده و Show می شه ولی اگه دوباره اینکارو بکنم فرم دوباره ظاهر می شه حالا من می خوام بجای کنترل در سطح فرم از Singlton Pattern اسفاده کنم .
این هم سورسش

public class SingltonPatternClass<T> where T : class, new()
{

public static T Instance
{
get { return SingletonCreator._instance; }
}

class SingletonCreator
{
static SingletonCreator() { }

internal static readonly T _instance = new T();
}
}

و من در MDI به این صورت صدا می زنم:

SingltonPatternClass<frmAddEditCityVillage>.Instance.MdiParent = this;
SingltonPatternClass<frmAddEditCityVillage>.Instance.Show();

حالا این کد در ابتدا مشکلی نداره و اجرا می شه ولی وقتی فرم رو می بندم و دوباره روی منو کلیک می کنم error میده:

Cannot access a disposed object.
Object name: 'frmAddEditCityVillage'.
حالا من باید Dispose() نکنم اگه Dispose نشه که تو حافظه هست آیا راه بهتری وجود داره

In_Chan_Nafar
دوشنبه 05 شهریور 1386, 22:35 عصر
کسی نمی خواد جواب ما رو بده

Amir Oveisi
سه شنبه 06 شهریور 1386, 00:38 صبح
http://www.codeproject.com/cs/design/singletonforms.asp

اَرژنگ
سه شنبه 06 شهریور 1386, 05:50 صبح
کسی نمی خواد جواب ما رو بده

دلیلتان را برایه استفاده از سینگلتن برایه اینکار نمیفهمم.
یک روش دیگر وجود داره که در مثالی که ضمیمه کردم میتوانید ببینید.
در ضمن، بنابر یک بحث دیگر در همین تالار، این روشی که مثال کدش را دادید سینگلتن نیست.

اَرژنگ
سه شنبه 06 شهریور 1386, 06:29 صبح
http://www.codeproject.com/cs/design/singletonforms.asp

روش بهتر و ساده‌تر ضمیمه است.