PDA

View Full Version : سوال: چطور میشه وسط اجرای یک برنامه، دستور پاک کردن همه ی متغیرهای تولید شده رو داد؟



Jalalkhan
دوشنبه 13 دی 1389, 21:33 عصر
من توی برنامم به یک مشکل اساسی برخوردم.
برنامه ی من یک برنامه محاسباتیه که توش کلی متغیر هست. وقتی دستور اجرای محاسباتو میدم، این متغیرها شروع میکنن به پر شدن. حالا وقتی بدون بستن برنامه میخام مجدداً دستور اجرای محاسباتو بدم ازم ایراد میگیره. کسی هست بتونه کمکم کنه؟
من فک میکنم باید یه فرمانی وجود داشته باشه که بشه با اون سریعاً همه ی اطلاعات ذخیره شده رو پاک کرد، درسته؟
مرسی:)

ameysams
دوشنبه 13 دی 1389, 23:16 عصر
اگر یک مثال میزدی بهتر میشد کمک کرد ولی عجالتاً این از تعریف و استفاده از متغیر:

dim x as new object
x=560
این هم از نابود کردنش:

x=nothing

Jalalkhan
سه شنبه 14 دی 1389, 00:42 صبح
خب نه، مسأله به این سادگی نیست متأسفانه!
ببین حقیقتش من وقتی دستور اجرای محاسباتو میدم، میره یه Sub main رو توی یه ماژول اجرا میکنه، که توی این sub main یک کلاس هست به نام myModel و تمام متغیرهام توی اون تعریف شدن. کلاس myModel توی ماژول به این صورت تعریف میشه:



Public Module Module1
Public myModel As New Model
Sub Main1(ByVal FileName As String)
AddHandler myModel.Init, AddressOf OnInitilize
AddHandler myModel.IterBottom, AddressOf OnIterationBottom
AddHandler myModel.IterTop, AddressOf OnIterationTop
AddHandler myModel.Converged, AddressOf OnIterationConverge
AddHandler myModel.End, AddressOf OnFinished
AddHandler myModel.OnMessage, AddressOf OnMessage
AddHandler myModel.OnModsimError, AddressOf OnMessage
XYFileReader.Read(myModel, FileName)
Dim myModsim As New Modsim
Csu.Modsim.NetworkUtils.ManageUnits.Unit_Conversio n_Controller(myModel)
myModsim.RunSolver(myModel)
End Sub


حالا وقتی بدون بسته شدن برنامه، این sub main رو صدا می زنم، میگه که myModel،حالا دیگه null reference شده!
نمیدونم تونستم بفهمونم مشکلم چیه یا نه:)

Jalalkhan
سه شنبه 14 دی 1389, 00:48 صبح
حقیقتش خودمم دقیقاً نمیدونم دردش چیه!
فقط اینو میفهمم که وقتی میخاد برای بار دوم بره این sub main رو صدا بزنه، با myModel به مشکل میخوره!
من حدس میزنم که شاید myModel رو باید یجوری خالی بکنم:)

Jalalkhan
سه شنبه 14 دی 1389, 00:54 صبح
البته تصحیح بکنم که وقتی هم ایراد میگیره، دقیقاً میره روی خط یکی مونده به آخری، یعنی:


myModsim.RunSolver(myModel)



64498

ameysams
سه شنبه 14 دی 1389, 11:43 صبح
اینطوری بنویسی چی؟؟:

Public Module Module1


Sub Main1(ByVal FileName As String)

Public myModel As New Model

AddHandler myModel.Init, AddressOf OnInitilize
AddHandler myModel.IterBottom, AddressOf OnIterationBottom
AddHandler myModel.IterTop, AddressOf OnIterationTop
AddHandler myModel.Converged, AddressOf OnIterationConverge
AddHandler myModel.End, AddressOf OnFinished
AddHandler myModel.OnMessage, AddressOf OnMessage
AddHandler myModel.OnModsimError, AddressOf OnMessage
XYFileReader.Read(myModel, FileName)
Dim myModsim As New Modsim
Csu.Modsim.NetworkUtils.ManageUnits.Unit_Conversio n_Controller(myModel)
myModsim.RunSolver(myModel)
End Sub