PDA

View Full Version : بستن کامل برنامه



loads
جمعه 31 فروردین 1386, 02:35 صبح
سلام دوستان
یه کدی بود که برنامه رو به طور کامل از حافظه خارج میکرد ، پیداش نکردم ! کسی بلده ؟ ممنون

CodeMasterX
جمعه 31 فروردین 1386, 02:40 صبح
منظورت رو نمیفهمم ؟!
شما وقتی که تمام فرم های برنامت بسته بشه و فرم اصلی برنامه Unload بشه و برابر با Nothing قرار بگیره برنامه از حافظه خارح میشه که البته نیازی به این تشریفات هم نیست.
با همون رویداد Unload فرم اصلی کافی بنویسی END همین!
اگر بعد از End برنامه تموم شد ولی از حافظه خارج نشد یه جایی برنامت مشکل داره.
مصلا شاید به منبعی دسترسی داشته و ارتباطش قبل از پایان برنامه قطع نشده ؟

Armin62
جمعه 31 فروردین 1386, 02:57 صبح
Public Sub UnloadAllForms()
Dim Form As Form
For Each Form In Forms
Unload Form
Set Form = Nothing
Next Form
End Sub

CodeMasterX
جمعه 31 فروردین 1386, 03:13 صبح
آره این کد هم جواب میده ولی در کل حتی نیازی به این کد هم نیست و با بستن فرم اصلی و دستور کلیدی END باید برنامه هم تموم بشه و هم از حافظه خارج بشه.
ولی مزیت این دسترو که آرمین نوشت اینه که اگر ارتباطی بین برنامه و منبعی دیگه وجود داشته باشه و کارش تموم نشده باشه چون فرم ها به Nothing ست میشن اون روابط هم تموم میشه.
پس با این کد میشه خیال راحت پیدا کرد که برنامه حتما حتما کامل پایان میپذیرد.

romina2006
جمعه 31 فروردین 1386, 08:34 صبح
از این کد هم می تونی استفاده کنی :


Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long)
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Sub Command1_Click()
ExitProcess GetExitCodeProcess(GetCurrentProcess, 0)
End Sub

Hossein Bazyan
جمعه 31 فروردین 1386, 09:06 صبح
ساده ترین و مطمئن ترین دستور به نظر من همان End معروف است . اما اگر در برنامه از بانک های اطلاعاتی هم استفاده کرده ای باید جهت صدمه ندیدن اطلاعات و بستن بدون دردسر برنامه اول بانکها را بست بعد دستور End را داد.

CodeMasterX
جمعه 31 فروردین 1386, 17:07 عصر
قبل از هر چیز همونجوری که گفتم باید تمام ارتباط های برنامه با منابع دیگه بسته بشه که این به عهده خود برنامه نویس هست.
وبعد از اون مطمئن ترین و ساده ترین کار استفاده ار همون کد romina هست.ممنون!

‍Peter Norton
جمعه 31 فروردین 1386, 23:11 عصر
آرمین درست گفته. به طور کلی در برنامه نویسی روز دنیا از دستورهایی مانند End، GOTO، GoSub استفاده نمیشه. هر برنامه بعد از اینکه هیچ ارجاعی در حافظه نداشته باشه بسته میشه. استفاده از ExitProccess دقیقاً مانند استفاده از END هست. هر دوی این دستورات ممکن موجب ایجاد Memory Leak بشه. پس حتماً در به کار بردنش به شدت دقت کنید. ضمن اینکه در کد آرمین میشه از Set Form=Nothing استفاده نکرد و فقظ در برنامه های MDI نیاز هست از این خط استفاده بشه.