PDA

View Full Version : مشکل در اجرای برنامه



Alghoochi
شنبه 23 مرداد 1389, 23:01 عصر
سلام

من یه برنامه نوشتم با Visual Studio 2008.
برنامه در حالت Debug (زدن F5 در Visual Studio) به خوبی کار میکنه ولی وقتی برنامه رو Release می کنم یه بخش از برنامه کار نمی کنه.

تا حالا همچین مشکلی نداشتم.
از دوستان کسی می دونه مشکل از کجاست؟

Saman_12
شنبه 23 مرداد 1389, 23:32 عصر
سلام.
به این کد توجه کن :


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Pro() As Process = Process.GetProcesses
For Each P As Process In Pro
MsgBox(P.Modules.Item(0).FileVersionInfo.ToString)
Next
End Sub

توی کد بالا ما میایم و لیستی از پروسس ها ایجاد می کنم و بعد اطلاعات کاملی از پروسس(مسیر دقیق نام ورژن و ....) رو توی یک مسیج باکس نشون میدیم.
این کد یک خطا ایجاد می کنه در حالی که به هیچ وجه کامپایل این خطا رو نمی گیره و شما رو هم از خطا آگاه نمی کنه وبرنامه اجرا میشه البته توسط کامپایل.(در بعضی مواقع کامپایل یک پیغام عدم دسترسی میده.) البته این نوع خطا بیشتر مربوط به کد های داخل فورم لود هست.
خوب دلیل چیه ؟
دلیل به و جود اومدن خطا در کد بالا اینه که سیستم به هیچ برنامه به طور عادی اجازه ی دسترسی به اطلاعات یک پروسه سیستمی رو نمیده!.در حالی که کد بالا از نظر منطقی کاملا درسته!!!!!!!
البته من فقط حدس می زنم که یک اینجور خطایی در برنامه شما ایجاد شده باشه.(بازم میگم شاید!!)

Alghoochi
شنبه 23 مرداد 1389, 23:39 عصر
من تو برنامم چند تا Background Worker دارم.
اینجور که شما گفتید باید مشکل از BackgroundWorker ها باشه. درسته؟

چجوری باید این مشکل رو حل کرد؟

Saman_12
یک شنبه 24 مرداد 1389, 00:11 صبح
من نمی تونم بگم دقیقا مشکل از کدوم قسمته برنامه شما هست اما احتمال اینکه خطایی که در بارش توضیح دادم توی کد های یک Background Worker اتفاق بیفته و کامپایل اون خطا رو نگیره کم هست پس بهتر توی کد های فورم لود دنبال خطا بگردید!:لبخند:
یه راهش این که کد های فورم لود رو کات بدبد و بعد امتحان کنید که هنوز خطا هست یا نه.(البته اگه اون کد ها مشکل خاصی در بر نامه ایجاد نمیکنه.):متفکر:
اگه براتون مقدور هست کد برنامه رو قرار دهید.

Alghoochi
یک شنبه 24 مرداد 1389, 00:46 صبح
توی Form_Load چندخط کد دارم که عمده اونها ایجاد کلاس و اضافه کردن اون اشیاء به فرمه.
اگه کدهای توی رویداد Form_Load رو پاک کنم دیگه اصلا شیئی نمی مونه که بخوام بدونم درست کار می کنه یا نه. اون بخشی که درست کار نمی کنه ماله یه usercontrol که توی فرم اصلی به صورت دینامیک اضافه می شه.
فقط این کد هست:


oldCI = System.Threading.Thread.CurrentThread.CurrentCultu re
System.Threading.Thread.CurrentThread.CurrentCultu re = _
New System.Globalization.CultureInfo("en-US")


یه سوال من چندتا usercontrol هم دارم. می تونه مشکل از formload اونها باشه؟

Saman_12
یک شنبه 24 مرداد 1389, 13:54 عصر
دوست عزیز اینکه اینچنین خطایی رویداده فقط یه احتمال هست پس بهتره شما کمی منتظر بمونید تا اساتید بیان و نظر خودشون رو اعلام کنن.(در مورد UserControl ها هم مشکل میتونه از فورم لود اونا نیز باشه.):متفکر:

Alghoochi
یک شنبه 24 مرداد 1389, 22:57 عصر
مشکلم حل شد.
من چند تا Background Worker داشتم که با حذف یکی از اونها مشکل حل شد.
ولی اینکه چرا تو Debug درست کار می کرد و توی حالت Release برام سؤاله.