PDA

View Full Version : سوال: توقف حلقه در حال اجرا در برنامه با فشردن كليدا



saadat99
سه شنبه 04 تیر 1387, 14:00 عصر
با سلام
چگونه مي توان يك حلقه در حال اجرا (مثل While) در برنامه C#.NET را با فشردن يك كليد (Button) متوقف كرد؟

yasak55
سه شنبه 04 تیر 1387, 14:41 عصر
سلام،
یه روش می تونه این باشه:
1- یک متغیر عمومی از نوع boolean تعریف کنی که مشخص کنه حلقه می شه ادامه پیدا کنه یا نه و در هر بار اجرای حلقه مقدار اون رو چک کنی که اگه مثلا false بود از حلقه break کنی.
2- در هر بار اجرای حلقه دستور Application.DoEvents رو اجرا کن.
3- موقع فشرده شدن کلید مقدار متغیر تعریف شده در مرحله 1 رو تغییر بده تا حلقه خارج بشه.

کسی تا حالا این کارو با حلقه ای که توی یه Thread دیگه بوده باشه انجام داده؟؟ آیا مراحل کار همین هست؟

__H2__
چهارشنبه 05 تیر 1387, 01:22 صبح
سلام


کسی تا حالا این کارو با حلقه ای که توی یه Thread دیگه بوده باشه انجام داده؟؟ آیا مراحل کار همین هست؟

برای کارهای زمان بر بهتر است همیشه از یک Thread استفاده شود و اگر چنین شود دیگری نیازی به استفاده از دستور قدیمی DoEvents نیست، این دستور میتواند سرعت را به شدت پایین آورد و بیشتر در VB6 کاربرد داشت، و در دات نت به ندرت به کار می اید.

ولی ان متغییر Boolean هنوز هم فکر بسیار خوبی است.

البته بهتر است دستور توقف کامل تر باشد.
متغییر مذکور را ست کند، چند ثانیه بسته به تشخیص برنامه نویس صبر کند، اگر Thread به زبان خوش و با آن Boolean متوقف نشده بود (به نوعی در دستوری گیر کرده بود یا هنگ کرده بود) به زور و با متد Abort ریسمان را متوقف کند.