الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال عن finalize في سي شارب

مغلق
بدأه Final Heaven في 2 أغسطس 2006 · 5 رد · 672 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته

أتمنى عليكم الردّ في هذا

في VB.Net كنت أستخدم إن كنت أريد الإنتقال إلى Another Form بالضغط على Button كنت أكتب

Form1.show()
me.finalize()

'not hide since the "me form" i'm not gonna use it anymore like when i use 1st form as intro ONLY

و انا الآن أقوم بتصميم برنامج بإستخدام C# و اريد إستخدام هذا الخاصية لإنهاء object of intro form بعد ظهوره

لقد درست c++ و افهم عمل destructor أو finilize و التي

 ~ClassName()

و لكن كيف أستطيع إلغاء Form Object Created In memory

من دون إستخدام لإخفائه فقط

this.hide()

و إن إستخدمت dispose أقفل البرنامج كله

و الله وليّ التوفيق

تم تعديل هذه المشاركة بواسطة Final Heaven في 2 أغسطس 2006 في 22:04

و كن فتى في ذرى العلياء همّته

يسمو بغاياته حتى على زحل

موقع خاص بي

My Website

قمت بتصميم لعبة بسيطة بإستخدام اللغة الجميلة الجافا

Plane Fighter Game

برنامج جميل بلغة الجافا يساعد على تنظيم المشاكل

The TS Organizer

#2

استخدم

this.Close();
#3

أخي أنا أتحدث عن intro للبرنامج و التي هي start up Form To the Program

عندما أستخدم close يقفل البرنامج بكامله لذا فليست بالشكل السهل الذي تطرحه

و أريد العمل بشكل كودي صحيح و ليس الإلتفاف لحل ما أريد

فلدي طريقة و لكن كمن يلتف 360 درجة ليصل لما هو أمامه

و كن فتى في ذرى العلياء همّته

يسمو بغاياته حتى على زحل

موقع خاص بي

My Website

قمت بتصميم لعبة بسيطة بإستخدام اللغة الجميلة الجافا

Plane Fighter Game

برنامج جميل بلغة الجافا يساعد على تنظيم المشاكل

The TS Organizer

#4

السلام عليكم ورحمة الله وبركاته

اخي اذا كنت تقصد عمل SplashScreen فمن الافضل ان تستخدم ال Threads واعتقد انه يوجد مثال هنا علي ذلك

Khaled_Tiger

النجاح الوحيد في الحياة هو أن تستطيع أن تحيا حياتك بالطريقة التي تريدها

يخاطبني السفيه بكل قبح *** فأكره أن أكون له مجيبا

يزيد سفاهة فأزيد حلمــا *** كعود زاده الإحراق طيبا

إذا نطق السفيه فلا تجبه *** فخير من إجابته السكوت

فإن كلَمته فرَجت عنــــه *** وإن خليته كمداً يـمـــوت

#5

وعليكم السلام ورحمة الله وبركاته.

لا أرى أنك تستهلك الذاكره بصوره سيئه بعدم قيامك بالـ Dispose للـ Startup Form ! فلماذا هذا الغلو ؟!

على كل حال اذا كانت الـ Form التي تبدأ بها البرنامج تستهلك كثيرا من الذاكره فيمكنك أن تجعل الـ Main والـ Application.Run في أي فورم أخرى جديده وتستدعي تلك الفورم آكلة الذاكره من الفورم الجديده وبالتالي يمكنك اجراء Dispose عليها دون أن يتم اغلاق البرنامج. والـ Form الجديده هذه يمكنك اخفائها أو شئ من هذا وتجعلها فقط من أجل الاداره.

ان لم ترد فعل ذلك يمكنك أن تستدعي الـ Form1 من خلال Application.Run وليس من خلال Show. ولكن لا يمكن أن يكون هناك أكثر من Application.Run في Thread واحد. ولذلك اجعل العمليه في Thread آخر. مثلا :

System.Threading.Thread otherThread = new System.Threading.Thread(new System.Threading.ThreadStart(RunTheForm1));
otherThread.Start();
this.Close(); // عادي
this.Dispose(); // عادي ماتخافش

ويمكنك أن تكتب RunTheForm1 هكذا :

public void RunTheForm1()
{
Form1 theForm1 = new Form1();
System.Windows.Forms.Application.Run(theForm1);
}

وعلى كل حال أنا لا أنصح بذلك, فلا أرى داعي لكل هذا اطلاقا.

#Read

http://MoutazShams.blogspot.com

projects003.gif

أعتذر عن التغيب هذه الأيام نظرا للانشغال المريب

#6

شكرا لك يا أخ معتز فلم تخطر لي الفكرة التي طرحتها

لأن splash screan التي أستخدمها لها حجم كبير لوجود فلاش

و كن فتى في ذرى العلياء همّته

يسمو بغاياته حتى على زحل

موقع خاص بي

My Website

قمت بتصميم لعبة بسيطة بإستخدام اللغة الجميلة الجافا

Plane Fighter Game

برنامج جميل بلغة الجافا يساعد على تنظيم المشاكل

The TS Organizer

هذا الموضوع مغلق.

مواضيع مشابهة