PDA

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



rooli2006
شنبه 26 اسفند 1391, 07:13 صبح
سلام
من یه برنامه با C# تو VS2010 نوشتم، بعد از اینکه نصبش میکنی و داری باهاش کار میکنی یه دفعه از برنامه خارج میشه یعنی کل برنامه exit میشه و دوباره باید برنامه رو اجراش کنی. مشکل کار از کجاست؟:ناراحت: پایگاه داده هم اکسس هست.

bazardeh
شنبه 26 اسفند 1391, 07:28 صبح
چه خطایی میده متن خطا یا عکشو بزار :چشمک:

rooli2006
دوشنبه 28 اسفند 1391, 07:14 صبح
هیچ خطایی نمیده میگم برنامه یه دفعه کلا بسته میشه بدون هیچ خطایی

veniz2008
دوشنبه 28 اسفند 1391, 09:49 صبح
سلام.
همیشه در چنین مواقعی یه پروژه جدید ایجاد کنید و ببینید آیا در اون پروژه جدید هم همین اتفاق می افته یا نه. اگر افتاد خوب قطعا مشکل از ویژوال استودیو شما یا شاید مشکل از سیستم شما باشه (مثلا وجود ویروس). ولی اگر همون برنامه این مشکل رو داره باید چک کنید در چه بخشی از برنامه این اتفاق می افته. مثلا همون لحظه اول که برنامه اجرا میشه (formload یا سازنده) یا مثلا دکمه خاصی رو کلیک میکنید یا ...
اگر مشکلتون حل نشد کدهای اون فرم رو بذارید تا دوستان یه نگاه بهش بندازن.
موفق باشید.

rooli2006
دوشنبه 28 اسفند 1391, 12:13 عصر
ممنون از جوابتون
من این برنامه رو ستاپ ساختم و روی چند تا سیستم هم نصب کردم برنامه فرم زیاد داره و تو هر فرمی ممکنه این اتفاق بیفته. ولی اکثرا مواقعی این اتفاق میفته که یه عملی با دیتابیس انجام میشه و تقریبا در تمام فرم ها عملیات با دیتابیس انجام میشه.
یه پروژه دیگه هم قبلا نوشته بودم با همین دیتابیس اکسس اونم همین مشکل رو داشت.
خواهشا اگه کسی میتونه کمک کنه.

veniz2008
دوشنبه 28 اسفند 1391, 12:21 عصر
توضیحات شما برای راهنمایی کردن اصلا کافی نیست. در حالت عادی اگر برنامه نویس کدی مبنی بر خروج از برنامه ننوشته باشه ( ;()application.Exit ) نباید خروج هم داشته باشیم. اگر سیستم ها با هم شبکه هستن و در تمام سیستم ها این مشکل وجود داره سیستم رو با یه آنتی ویروس بروز شده scan کنید.(این فقط یه احتمال هست که باید بررسی بشه).

C#‎_best_Programmer
دوشنبه 28 اسفند 1391, 12:50 عصر
دادشم میشه کداتو بزاری

Abbas Naghdi
دوشنبه 28 اسفند 1391, 13:45 عصر
با سلام

ببین هر کاری بهت میگم انجام بده ... (در غیر این صورت مشکل حل نمیشه)

داخل رویداد FormClosing این کد رو بنویس ((e.Cancel = false;))
با این کد دیگه برنامه خارج نمیشه ... (باید از Task Manager خارجش کنی)

خب حالا با برنامه کار کن ببین این مشکل رو داری هنوز یا نه ... که اگه داشتی

1.:: یه آنتی ویروس درست حسابی نصب کن و سیستم رو ویروس کشی کن
2.:: ویژوال استادیو رو دوباره نصب کن و پروژه رو دوباره Build
3.:: بانک اطلاعاتی رو دوباره نصب و کانفیک کن

و اگه خارج نشد ...

1.:: 2 و 3 بالا رو انجام بده
2.:: کد های برنامتو خط به خط کن
3.:: از Try و Catch استفاده کن ... مخصوصا در مواقع استفاده از بانک اطلاعاتی

این کارا رو کنی ... امکان نداره جواب نگیری ...

rooli2006
دوشنبه 28 اسفند 1391, 18:58 عصر
دادشم میشه کداتو بزاری
گفتم برنامه فرم و کد زیاد داره و تو هر فرمی که باشی ممکنه این اتفاق بیفته یعنی کل نرم افزار exit بشه بدون هیچ پیغام و اروری

توضیحات شما برای راهنمایی کردن اصلا کافی نیست
توضیحاتی نداره فرض کن شما داری با یه نرم افزار کار میکنی (مثلا فوتوشاپ) و نرم افزار یهو بدون هیچ پیغام و اروری بسته (EXIT) میشه

کارایی که عباس آقا گفتن رو انجام میدم ببینم چی میشه.

rooli2006
پنج شنبه 01 فروردین 1392, 19:08 عصر
بازم همون مشکل پابرجاست مخصوصا موقعی که میخوای یه فرم رو باز کنی.
کسی نمیدونه مشکل از کجاست؟:ناراحت:

C#‎_best_Programmer
پنج شنبه 01 فروردین 1392, 19:12 عصر
دادشم یبار کاری که میگم بکن برنامه رو به جا درایو سی تو یه درایو دیگه نصب کن

esafb52
پنج شنبه 01 فروردین 1392, 19:23 عصر
دوست عزیز از اکسپشن ها استفاده کن برای مدیریت خطا تا بدونی چه اتفاقی داره می افته
try
{
//کدهاتو تو این قسمت بذار
}
catch (Exception ex)
{

MessageBox.Show(ex.Message);
}

veniz2008
پنج شنبه 01 فروردین 1392, 20:05 عصر
توضیحاتی نداره فرض کن شما داری با یه نرم افزار کار میکنی (مثلا فوتوشاپ) و نرم افزار یهو بدون هیچ پیغام و اروری بسته (EXIT) میشه
راستی برای خارج نشدن هم در رویداد formclosing کد زیر باید نوشته بشه.

e.Cancle = true;
من اگر چنین اتفاقی بیفته تنها چیزی که به نظرم میرسه ویروس هست. با یک آنتی ویروس بروز شده سیستمتون رو بررسی کنید.
موفق باشید.

rooli2006
جمعه 02 فروردین 1392, 13:06 عصر
بالاخره پیدا کردم این ارور رو میده:
Attempted to read or write protected memory. This is often an indication that other memory is corrupt

دوستان کسی اگه میدونه راهنمایی کنه.
یه دنیا ممنون.

rooli2006
جمعه 02 فروردین 1392, 13:15 عصر
ضمنا ارور تو فایل Program.cs و رو این کد

Application.Run(new mainForm());
ظاهر میشه.

خواهشاً کمک:ناراحت:

veniz2008
جمعه 02 فروردین 1392, 13:37 عصر
سلام.
در تاپیک زیر درباره مشکل شما توضیح داده شده:
http://social.msdn.microsoft.com/Forums/en-US/vbpowerpacks/thread/8789ea67-fbc5-4a7b-a4eb-d4a8a050d5c1/
اگر مشکلتون حل نشد. کدهای مربوط به فرم لود رو بذارید. اگر هم از dll خاصی استفاده می کنید دربارش توضیح بدید.
موفق باشید.

rooli2006
جمعه 02 فروردین 1392, 22:08 عصر
خیلی ممنون از راهنمایی های دوستان.
کد e.Cancel = True رو تو رویداد FormClosing گذاشتم بازم مشکل حل نشد یعنی با وجود این کد هم باز برنامه کلا بسته میشه.

در تاپیک زیر درباره مشکل شما توضیح داده شده:
http://social.msdn.microsoft.com/For...-d4a8a050d5c1/

چیزی که از این تاپیک فهمیدم تو یکی از پست ها گفته بود تو قسمت Tools menu ->Options -> Debugging -> General تیک "Suppress JIT optimization on module load" برداشته بشه که این کار رو هم کردم ولی باز مشکل پا برجاست البته با استفاده از کد بالا و برداشتن این تیک احساس میکنم مشکل کمتر شده ولی هنوز پابرجاست یعنی یهو برنامه بسته میشه.
این فرم لود فرم اصلیه:

private void main_Load(object sender, EventArgs e)
{

toolStripStatusLabel1.Text += " " + sd.ToString("N");
OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "\\apadana.accdb");
con.Open();


OleDbDataAdapter da = new OleDbDataAdapter("select * from faalsazi", con);
DataTable dt = new DataTable();
da.Fill(dt);

if (dt.Rows[0][0].ToString() == "1")
{
پروندهToolStripMenuItem.Enabled = true;
گزارشگیریToolStripMenuItem.Enabled = true;
مدیریتToolStripMenuItem.Enabled = true;
انبارToolStripMenuItem.Enabled = true;
فعالسازیToolStripMenuItem.Enabled = false;
}
con.Close();
}

اگر مشکلتون حل نشد. کدهای مربوط به فرم لود رو بذارید.
البته بازم میگم با باز شدن هر فرمی از این برنامه ممکنه این مشکل پیش بیاد و یا حتی تو خود هر فرم.

اگر هم از dll خاصی استفاده می کنید دربارش توضیح بدید.
به غیر از dll های خود Visul Studio و Stimul از سه تا dll دیگه یکی DatePicker که یه datetimepicker شمسیه و FMessageBox که message box فارسیه و Persia که برا تبدیل تاریخ میلادی به شمسی استفاده میشه هم استفاده میکنم.
دارم دیوونه میشم. ویندوز عوض کردم، همه چیو مجدد از اول نصب کردم اما نشد که نشد. کم کم دارم از VS و C# زده میشم.:ناراحت:

dabirsiaghi
جمعه 02 فروردین 1392, 22:31 عصر
در Program.cs میتونید از یک event بنام ApplicationExeption استفاده کنید در اینصورت هر جا خطای مدیریت نشده ای در برنامه اتفاق بیفتد برنامه نمی ترکد

Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Appli cation_ThreadException);
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
ShowUnSuccussMessage(e);

}
private static void ShowUnSuccussMessage(System.Threading.ThreadExcept ionEventArgs e)
{
FarsiMessageBox.Show("خطا در انجام عملیات" + "\n" + "با مسئول برنامه تماس حاصل نمائید", "خطا", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error, System.Windows.Forms.MessageBoxDefaultButton.Butto n1);
Hashtable oHashtable = new Hashtable();

oHashtable.Add("Program", "ShowUnSuccussMessage");

LogHandler.LogError(oHashtable, e.Exception);
}

rooli2006
شنبه 03 فروردین 1392, 08:27 صبح
همین رو کم داشتیم دیگه پروژه از داخل VS ران نمیشه با این خطا:عصبانی::گریه:

rooli2006
شنبه 03 فروردین 1392, 08:44 صبح
در Program.cs میتونید از یک event بنام ApplicationExeption استفاده کنید در اینصورت هر جا خطای مدیریت نشده ای در برنامه اتفاق بیفتد برنامه نمی ترکد
این کار هم کردم اما بازم مشکل پابرجاست؛ بدون هیچ پیغام خطایی برنامه کلا بسته میشه.

تو تاپیکا که میرم و میخونم میبینم که برنامه نویسای واقعا عالی ای اینجا هستند و البته بعضی ها بسیار پر ادعا. یعنی هیشکی نمیتونه مشکل مارو حل کنه؟:گریه: (یعنی واقعا دیگه کم کم داره گریم میگیره)

dabirsiaghi
شنبه 03 فروردین 1392, 09:02 صبح
این کار هم کردم اما بازم مشکل پابرجاست؛ بدون هیچ پیغام خطایی برنامه کلا بسته میشه.

تو تاپیکا که میرم و میخونم میبینم که برنامه نویسای واقعا عالی ای اینجا هستند و البته بعضی ها بسیار پر ادعا. یعنی هیشکی نمیتونه مشکل مارو حل کنه؟:گریه: (یعنی واقعا دیگه کم کم داره گریم میگیره)
تو برنامهتون از com استفاده کردین؟
شاید resource ای در برنامه دارید که Dispose نشده باشد؟
سرچ کردین در اینترنت؟

veniz2008
شنبه 03 فروردین 1392, 12:04 عصر
تو تاپیکا که میرم و میخونم میبینم که برنامه نویسای واقعا عالی ای اینجا هستند و البته بعضی ها بسیار پر ادعا. یعنی هیشکی نمیتونه مشکل مارو حل کنه؟:گریه: (یعنی واقعا دیگه کم کم داره گریم میگیره)
دلیل اینکه کسی نمیتونه به شما کمک کنه واضح هست چون قبلا این مشکل برای کسی پیش نیومده. شما اگر سایت هایی مثل msdn و stackovweflow رو هم نگاه کنید (که بهترین و بروزترین سایت ها هستند) می بینید که در این زمینه جواب واحدی رو ارائه نمیکنن و در واقع چندین حدس و پیشنهاد ارائه میکنن.
اون dll هایی رو که گفتید در پروژه استفاده کردید رو بصورت موقت غیر فعال کنید ( در تمام جاهایی که ازشون استفاده کردید) و نتیجه کار رو مشاهده کنید.

rooli2006
یک شنبه 04 فروردین 1392, 10:25 صبح
تو برنامهتون از com استفاده کردین؟
شاید resource ای در برنامه دارید که Dispose نشده باشد؟
سرچ کردین در اینترنت؟
منظورتون چیه؟

dabirsiaghi
یک شنبه 04 فروردین 1392, 10:45 صبح
منظورتون چیه؟
منظور اینه که شاید object ای در برنامه دارید که Dispose نمی شه و مشکل از اینجا ناشی میشه

RED-C0DE
یک شنبه 04 فروردین 1392, 11:48 صبح
همون چیزی ک dabirsiaghi گفتن رو چک کنید
ممکنه از کامپوننت های COM استفاده کرده باشید
توی پروژه چ رفرنسهایی دارین؟ اونا رو اینجا لیست کنین اینجا

RED-C0DE
یک شنبه 04 فروردین 1392, 11:49 صبح
همون چیزی ک dabirsiaghi گفتن رو چک کنید
ممکنه از کامپوننت های COM استفاده کرده باشید
توی پروژه چ رفرنسهایی دارین؟ اونا رو اینجا لیست کنین اینجا

علی متقی پور
یک شنبه 04 فروردین 1392, 11:59 صبح
سلام دوست عزیزم
یک پروژه جدید ایجاد کن و تمامی کدها رو مجددا در پروژه جدید پیست کن. وقتی همه قسمت ها کامل شد پروژه را بیلد کن.
بعد پروژه را از داخل Vs ران کن و از تابع Main شروع به دیباگ و تریس کن. بعد ببین دقیقا برنامه کجا دچار مشکل میشه.
من مطمئنم مشکلت یه چیز خیلی کوچیکه. شک نداشته باش. بیشتر احتمال منم اینه که چون پروژه را قبل از بیلد کردن کلین نکردی بیلدت بطور کامل و درست انجام نشده
امیدوارم مشکلت حل بشه
ممنون میشم اگر احیانا این کارهایی که گفتم را کردی خبرش را بهم بدی تا بدونم نتیجش چی بوده

rooli2006
یک شنبه 04 فروردین 1392, 22:17 عصر
منظور اینه که شاید object ای در برنامه دارید که Dispose نمی شه و مشکل از اینجا ناشی میشه
چطوری باید اینو بفهمم؛ و چطوری رفعش کنم. میشه بیشتر توضیح بدین

ک پروژه جدید ایجاد کن و تمامی کدها رو مجددا در پروژه جدید پیست کن.
پروژم 25 تا فرم داره وکلی کد حتی کپی کردن اینها هم زمان خیلی زیادی می بره.

توی پروژه چ رفرنسهایی دارین؟ اونا رو اینجا لیست کنین اینجا
اینا:
101846

علی متقی پور
دوشنبه 05 فروردین 1392, 02:34 صبح
چطوری باید اینو بفهمم؛ و چطوری رفعش کنم. میشه بیشتر توضیح بدین

پروژم 25 تا فرم داره وکلی کد حتی کپی کردن اینها هم زمان خیلی زیادی می بره.

اینا:
101846

فکر نمیکنم شما نیازی به کمک داشته باشید.
برنامه شما مطمئنا بزرگتر از علمتون نیست. بنظر نمیاد شما برنامه ای نوشته باشید که بیش از 100 تا کلاس داشته باشه. کپی پیست 100 تا کلاس نهایت نیم ساعت وقت میبره.

rooli2006
چهارشنبه 14 فروردین 1392, 07:44 صبح
کپی پیست 100 تا کلاس نهایت نیم ساعت وقت میبره.
این کار رو هم کردم ولی مشکل بازم حل نشد.
البته برنامه رو تو ویندوز 7 نصب کردم هنوز تا حالا مشکلی پیش نیومده یعنی یهو از برنامه بیرون نپریده.
نمیدونم بخاطر ویندوزه؟ چیه؟
کسی نظری نداره؟

rooli2006
چهارشنبه 14 فروردین 1392, 19:21 عصر
ویندوز 7 نصب کردم بعد VS2010 رو و پروژه رو داخلش clean و build کردم. حالا وقتی برنامه رو رو همون 7 نصب میکنی هیچ مشکلی نداره و از برنامه خارج نمیشه ولی وقتی رو xp نصب کردم اینبار دیگه بدون ارور خارج نمیشه قبلش این ارور رو میده بعد برنامه بسته میشه. تو رو خدا یکی کمک کنه دارم داغون میشم:عصبانی++:

rooli2006
پنج شنبه 15 فروردین 1392, 22:20 عصر
چرا هیشکی جواب نمیده

linux
پنج شنبه 15 فروردین 1392, 22:48 عصر
چرا هیشکی جواب نمیده
روی چندتا کامپیوتر نصب هست نرم‌افزار شما؟ اگر این اتفاق در همه کامپیوترها می‌افتد که هیچ حرفی برای گفتن نیست الا دیدن کل سورس شما و دیباگ کردن اگر روی یک کامپیوتر اتفاق می‌افتند ممکن مشکل سخت افزاری داشته باشد مثلا رمش مشکل داشته باشد یا مشکل نرم‌افزاری ویندوز مشکل داشته باشد یا سیستم ویروسی شده باشد

RED-C0DE
پنج شنبه 15 فروردین 1392, 23:16 عصر
سیستم خودت 32 بیت یا 64 بیته؟ برنامه رو روی Any CPU یا x86 کامپایل می کنی؟ سیستم های دیگه 32 یا 64 بیته؟
(منظور اینکه راه سریعتر اینه ک این گزینه ها رو تغییر بدی ببینی تغییری می کنه یا نه، از بخش Properties مربوط ب Solution این تنظیمات رو تغییر بده)

جدا از این،
احتمالا یکی از همین کامپوننت هایی ک استفاده کردی توی شرایط خاصی عملکردش دچار مشکل می شه (خوندن غیر مجاز از محلی از حافظه)
یا سورس رو بذار اینجا..
یا اون 3 4 تا کامپوننت رو یکی یکی حذف کن و هر دفعه تست کن ببین خطا رفع می شه، اگه شد اونوقت فکر جایگزین بجای اون کامپوننت بیفت یا چون دیگه می دونی مشکل از چی هس باز راه های دیگه ای هم می تونه باشه..