سلام
من یه برنامه با C# تو VS2010 نوشتم، بعد از اینکه نصبش میکنی و داری باهاش کار میکنی یه دفعه از برنامه خارج میشه یعنی کل برنامه exit میشه و دوباره باید برنامه رو اجراش کنی. مشکل کار از کجاست؟ پایگاه داده هم اکسس هست.
سلام
من یه برنامه با C# تو VS2010 نوشتم، بعد از اینکه نصبش میکنی و داری باهاش کار میکنی یه دفعه از برنامه خارج میشه یعنی کل برنامه exit میشه و دوباره باید برنامه رو اجراش کنی. مشکل کار از کجاست؟ پایگاه داده هم اکسس هست.
چه خطایی میده متن خطا یا عکشو بزار
هیچ خطایی نمیده میگم برنامه یه دفعه کلا بسته میشه بدون هیچ خطایی
سلام.
همیشه در چنین مواقعی یه پروژه جدید ایجاد کنید و ببینید آیا در اون پروژه جدید هم همین اتفاق می افته یا نه. اگر افتاد خوب قطعا مشکل از ویژوال استودیو شما یا شاید مشکل از سیستم شما باشه (مثلا وجود ویروس). ولی اگر همون برنامه این مشکل رو داره باید چک کنید در چه بخشی از برنامه این اتفاق می افته. مثلا همون لحظه اول که برنامه اجرا میشه (formload یا سازنده) یا مثلا دکمه خاصی رو کلیک میکنید یا ...
اگر مشکلتون حل نشد کدهای اون فرم رو بذارید تا دوستان یه نگاه بهش بندازن.
موفق باشید.
ممنون از جوابتون
من این برنامه رو ستاپ ساختم و روی چند تا سیستم هم نصب کردم برنامه فرم زیاد داره و تو هر فرمی ممکنه این اتفاق بیفته. ولی اکثرا مواقعی این اتفاق میفته که یه عملی با دیتابیس انجام میشه و تقریبا در تمام فرم ها عملیات با دیتابیس انجام میشه.
یه پروژه دیگه هم قبلا نوشته بودم با همین دیتابیس اکسس اونم همین مشکل رو داشت.
خواهشا اگه کسی میتونه کمک کنه.
توضیحات شما برای راهنمایی کردن اصلا کافی نیست. در حالت عادی اگر برنامه نویس کدی مبنی بر خروج از برنامه ننوشته باشه ( ;()application.Exit ) نباید خروج هم داشته باشیم. اگر سیستم ها با هم شبکه هستن و در تمام سیستم ها این مشکل وجود داره سیستم رو با یه آنتی ویروس بروز شده scan کنید.(این فقط یه احتمال هست که باید بررسی بشه).
دادشم میشه کداتو بزاری
با سلام
ببین هر کاری بهت میگم انجام بده ... (در غیر این صورت مشکل حل نمیشه)
داخل رویداد FormClosing این کد رو بنویس ((e.Cancel = false;))
با این کد دیگه برنامه خارج نمیشه ... (باید از Task Manager خارجش کنی)
خب حالا با برنامه کار کن ببین این مشکل رو داری هنوز یا نه ... که اگه داشتی
1.:: یه آنتی ویروس درست حسابی نصب کن و سیستم رو ویروس کشی کن
2.:: ویژوال استادیو رو دوباره نصب کن و پروژه رو دوباره Build
3.:: بانک اطلاعاتی رو دوباره نصب و کانفیک کن
و اگه خارج نشد ...
1.:: 2 و 3 بالا رو انجام بده
2.:: کد های برنامتو خط به خط کن
3.:: از Try و Catch استفاده کن ... مخصوصا در مواقع استفاده از بانک اطلاعاتی
این کارا رو کنی ... امکان نداره جواب نگیری ...
گفتم برنامه فرم و کد زیاد داره و تو هر فرمی که باشی ممکنه این اتفاق بیفته یعنی کل نرم افزار exit بشه بدون هیچ پیغام و اروریدادشم میشه کداتو بزاری
توضیحاتی نداره فرض کن شما داری با یه نرم افزار کار میکنی (مثلا فوتوشاپ) و نرم افزار یهو بدون هیچ پیغام و اروری بسته (EXIT) میشهتوضیحات شما برای راهنمایی کردن اصلا کافی نیست
کارایی که عباس آقا گفتن رو انجام میدم ببینم چی میشه.
بازم همون مشکل پابرجاست مخصوصا موقعی که میخوای یه فرم رو باز کنی.
کسی نمیدونه مشکل از کجاست؟
دادشم یبار کاری که میگم بکن برنامه رو به جا درایو سی تو یه درایو دیگه نصب کن
دوست عزیز از اکسپشن ها استفاده کن برای مدیریت خطا تا بدونی چه اتفاقی داره می افته
try
{
//کدهاتو تو این قسمت بذار
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
بالاخره پیدا کردم این ارور رو میده:
Attempted to read or write protected memory. This is often an indication that other memory is corrupt
دوستان کسی اگه میدونه راهنمایی کنه.
یه دنیا ممنون.
ضمنا ارور تو فایل Program.cs و رو این کد
Application.Run(new mainForm());
ظاهر میشه.
خواهشاً کمک
سلام.
در تاپیک زیر درباره مشکل شما توضیح داده شده:
http://social.msdn.microsoft.com/For...-d4a8a050d5c1/
اگر مشکلتون حل نشد. کدهای مربوط به فرم لود رو بذارید. اگر هم از dll خاصی استفاده می کنید دربارش توضیح بدید.
موفق باشید.
خیلی ممنون از راهنمایی های دوستان.
کد e.Cancel = True رو تو رویداد FormClosing گذاشتم بازم مشکل حل نشد یعنی با وجود این کد هم باز برنامه کلا بسته میشه.
چیزی که از این تاپیک فهمیدم تو یکی از پست ها گفته بود تو قسمت Tools menu ->Options -> Debugging -> General تیک "Suppress JIT optimization on module load" برداشته بشه که این کار رو هم کردم ولی باز مشکل پا برجاست البته با استفاده از کد بالا و برداشتن این تیک احساس میکنم مشکل کمتر شده ولی هنوز پابرجاست یعنی یهو برنامه بسته میشه.در تاپیک زیر درباره مشکل شما توضیح داده شده:
http://social.msdn.microsoft.com/For...-d4a8a050d5c1/
این فرم لود فرم اصلیه:
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 های خود Visul Studio و Stimul از سه تا dll دیگه یکی DatePicker که یه datetimepicker شمسیه و FMessageBox که message box فارسیه و Persia که برا تبدیل تاریخ میلادی به شمسی استفاده میشه هم استفاده میکنم.اگر هم از dll خاصی استفاده می کنید دربارش توضیح بدید.
دارم دیوونه میشم. ویندوز عوض کردم، همه چیو مجدد از اول نصب کردم اما نشد که نشد. کم کم دارم از VS و C# زده میشم.
در 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);
}
همین رو کم داشتیم دیگه پروژه از داخل VS ران نمیشه با این خطا
این کار هم کردم اما بازم مشکل پابرجاست؛ بدون هیچ پیغام خطایی برنامه کلا بسته میشه.در Program.cs میتونید از یک event بنام ApplicationExeption استفاده کنید در اینصورت هر جا خطای مدیریت نشده ای در برنامه اتفاق بیفتد برنامه نمی ترکد
تو تاپیکا که میرم و میخونم میبینم که برنامه نویسای واقعا عالی ای اینجا هستند و البته بعضی ها بسیار پر ادعا. یعنی هیشکی نمیتونه مشکل مارو حل کنه؟ (یعنی واقعا دیگه کم کم داره گریم میگیره)
دلیل اینکه کسی نمیتونه به شما کمک کنه واضح هست چون قبلا این مشکل برای کسی پیش نیومده. شما اگر سایت هایی مثل msdn و stackovweflow رو هم نگاه کنید (که بهترین و بروزترین سایت ها هستند) می بینید که در این زمینه جواب واحدی رو ارائه نمیکنن و در واقع چندین حدس و پیشنهاد ارائه میکنن.
اون dll هایی رو که گفتید در پروژه استفاده کردید رو بصورت موقت غیر فعال کنید ( در تمام جاهایی که ازشون استفاده کردید) و نتیجه کار رو مشاهده کنید.
منظورتون چیه؟تو برنامهتون از com استفاده کردین؟
شاید resource ای در برنامه دارید که Dispose نشده باشد؟
سرچ کردین در اینترنت؟
همون چیزی ک dabirsiaghi گفتن رو چک کنید
ممکنه از کامپوننت های COM استفاده کرده باشید
توی پروژه چ رفرنسهایی دارین؟ اونا رو اینجا لیست کنین اینجا
همون چیزی ک dabirsiaghi گفتن رو چک کنید
ممکنه از کامپوننت های COM استفاده کرده باشید
توی پروژه چ رفرنسهایی دارین؟ اونا رو اینجا لیست کنین اینجا
سلام دوست عزیزم
یک پروژه جدید ایجاد کن و تمامی کدها رو مجددا در پروژه جدید پیست کن. وقتی همه قسمت ها کامل شد پروژه را بیلد کن.
بعد پروژه را از داخل Vs ران کن و از تابع Main شروع به دیباگ و تریس کن. بعد ببین دقیقا برنامه کجا دچار مشکل میشه.
من مطمئنم مشکلت یه چیز خیلی کوچیکه. شک نداشته باش. بیشتر احتمال منم اینه که چون پروژه را قبل از بیلد کردن کلین نکردی بیلدت بطور کامل و درست انجام نشده
امیدوارم مشکلت حل بشه
ممنون میشم اگر احیانا این کارهایی که گفتم را کردی خبرش را بهم بدی تا بدونم نتیجش چی بوده
چطوری باید اینو بفهمم؛ و چطوری رفعش کنم. میشه بیشتر توضیح بدینمنظور اینه که شاید object ای در برنامه دارید که Dispose نمی شه و مشکل از اینجا ناشی میشه
پروژم 25 تا فرم داره وکلی کد حتی کپی کردن اینها هم زمان خیلی زیادی می بره.ک پروژه جدید ایجاد کن و تمامی کدها رو مجددا در پروژه جدید پیست کن.
اینا:توی پروژه چ رفرنسهایی دارین؟ اونا رو اینجا لیست کنین اینجا
untitled.JPG
این کار رو هم کردم ولی مشکل بازم حل نشد.کپی پیست 100 تا کلاس نهایت نیم ساعت وقت میبره.
البته برنامه رو تو ویندوز 7 نصب کردم هنوز تا حالا مشکلی پیش نیومده یعنی یهو از برنامه بیرون نپریده.
نمیدونم بخاطر ویندوزه؟ چیه؟
کسی نظری نداره؟
ویندوز 7 نصب کردم بعد VS2010 رو و پروژه رو داخلش clean و build کردم. حالا وقتی برنامه رو رو همون 7 نصب میکنی هیچ مشکلی نداره و از برنامه خارج نمیشه ولی وقتی رو xp نصب کردم اینبار دیگه بدون ارور خارج نمیشه قبلش این ارور رو میده بعد برنامه بسته میشه. تو رو خدا یکی کمک کنه دارم داغون میشم
چرا هیشکی جواب نمیده
روی چندتا کامپیوتر نصب هست نرمافزار شما؟ اگر این اتفاق در همه کامپیوترها میافتد که هیچ حرفی برای گفتن نیست الا دیدن کل سورس شما و دیباگ کردن اگر روی یک کامپیوتر اتفاق میافتند ممکن مشکل سخت افزاری داشته باشد مثلا رمش مشکل داشته باشد یا مشکل نرمافزاری ویندوز مشکل داشته باشد یا سیستم ویروسی شده باشد
سیستم خودت 32 بیت یا 64 بیته؟ برنامه رو روی Any CPU یا x86 کامپایل می کنی؟ سیستم های دیگه 32 یا 64 بیته؟
(منظور اینکه راه سریعتر اینه ک این گزینه ها رو تغییر بدی ببینی تغییری می کنه یا نه، از بخش Properties مربوط ب Solution این تنظیمات رو تغییر بده)
جدا از این،
احتمالا یکی از همین کامپوننت هایی ک استفاده کردی توی شرایط خاصی عملکردش دچار مشکل می شه (خوندن غیر مجاز از محلی از حافظه)
یا سورس رو بذار اینجا..
یا اون 3 4 تا کامپوننت رو یکی یکی حذف کن و هر دفعه تست کن ببین خطا رفع می شه، اگه شد اونوقت فکر جایگزین بجای اون کامپوننت بیفت یا چون دیگه می دونی مشکل از چی هس باز راه های دیگه ای هم می تونه باشه..