PDA

View Full Version : سوال: بستن فرم از طریق دکمه close عملیات را متوقف نمی کند



sajadzare
پنج شنبه 24 مرداد 1392, 17:07 عصر
سلام

من میخوام وقتی کاربر دکمه close فرم رو میزنه عملیات پس زمینه فرم کاملا متوقف بشه. از دستور dispose توی دکمه نمیخوام استفاده کنم ممکنه بگین توی چه رویدادی از فرم این کاررو بکنم آیا رویداد leave مربوط به دکمه خروج از فرم محسوب میشه ؟

samadblaj
پنج شنبه 24 مرداد 1392, 18:24 عصر
سلام از کد زیر استفاده کن تمامی سرویس های نرم افزار رو متوقف میکنه...

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
Application.ExitThread();
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Application.ExitThread();
}

sajadzare
پنج شنبه 24 مرداد 1392, 21:14 عصر
ممنونم از جوابتون ولی این کد برنامه رو می بنده ولی عملیات متوقف نمیشه و برنامه همچنان بعد از بسته شدن فرم قبل از کد invoke ارور میده و گیر میکنه من میخوام کلا همه چی متوقف بشه در ضمن این کد فرم اصلی رو هم می بنده در صورتی که من فرم فرزند رو میخوام ببندم

tooraj_azizi_1035
جمعه 25 مرداد 1392, 14:13 عصر
عملیات پس زمینه منظورتون چیه؟ از BackgroundWorker استفاده کردید؟

yanni2
جمعه 25 مرداد 1392, 15:17 عصر
داخل رویداد کلیک button
this.close();بزن

sajadzare
جمعه 25 مرداد 1392, 16:30 عصر
عملیات پس زمینه منظورتون چیه؟ از BackgroundWorker استفاده کردید؟

بله از background worker استفاده میکنم.

sajadzare
جمعه 25 مرداد 1392, 16:32 عصر
داخل رویداد کلیک button
this.close();بزن

دوست عزیز من نمی خوام از دکمه استفاده کنم . میخوام وقتی دکمه close فرم زده شد این اتفاق بیفته

mousa1992
جمعه 25 مرداد 1392, 17:16 عصر
چون از thread های دیگه ای توی برنامتون استفاده کردید پس با بستن فرم فقط ترد اصلی برنامه شما کارش خاتمه پیدا میکنه
اگه button ی به منظور خروج قرار دادید از Application.Exit() استفاده کنید و در غیر این صورت هم میتونی تو رویداد FormClosing از همین کد استفاده کنی

موفق باشی

tooraj_azizi_1035
شنبه 26 مرداد 1392, 14:32 عصر
در رویداد FormClosing باید متد CancelAsync() شیء BackgroundWorker رو فراخونی کنید.

amir_hamze
جمعه 05 مهر 1392, 22:46 عصر
چون از thread های دیگه ای توی برنامتون استفاده کردید پس با بستن فرم فقط ترد اصلی برنامه شما کارش خاتمه پیدا میکنه
اگه button ی به منظور خروج قرار دادید از Application.Exit() استفاده کنید و در غیر این صورت هم میتونی تو رویداد FormClosing از همین کد استفاده کنی

موفق باشی

اگر بخوام از فرم اصلی به فرم فرعی برم باید چیکار کنم؟
میدونم از this.hide(); میشه استفاده کرد اما وقتی تو فرم فرم دکمه close رو بزنم برنامه تو حالت اجرا باقی میمونه

NasimBamdad
شنبه 06 مهر 1392, 07:35 صبح
منم همین مشکل رو دارم ! به نظر من باید اون Thread یا هرچی که هستند رو فراخوانی و Stop کرد و در آخر Application.Exit(); !

c-sharp_South
شنبه 06 مهر 1392, 08:24 صبح
کاملا با آقای dev-dev-dev موافق هستم ...
من همین مشکل رو برای خودم با قرار دادن application.exit(); در رویداد form closing حل کردم .

ashkan1234
شنبه 06 مهر 1392, 09:47 صبح
سلام...
خدمت شما عارضم که در اینجور مواقع رویداد FormClosed هم فوق العاده کاربرد دارد...
با تشخل...:لبخند: