עבור לתוכן

C# - לולאות

Featured Replies

פורסם

יש לי תוכנת Winform ובה Listbox שאליה אני מכניס את הקבצים שלי ומריץ אותם, כשאני לוחץ על כפתור ה-STOP אני רוצה שהתוכנה תעצור מההרצה אבל מה שקורה זה שאם אני הולך להריץ יותר מלופ אחד היא עוצרת את אותו הלופ ועוברת לבא בתור ולא יוצאת לגמריי

המשתנה count סופר כמה לופים בעצם הרצתי ו-NumberOfLoops זה כמה אני הולך להריץ.

מה שקורה כרגע ברגע הלחיצה על כפתור ה-STOP זה שה-CLASS שמריץ את הקבצים (נמצא בתוך ה-FOR ולא צירפתי אותו כי זה לא רלוונטי) מקבל ערך בוליאני שלילי ואז המשתנה ContinuePlay הופך שלילי וזה לא נכנס ללולאה אבל כאמור ללולאה הבאה כן, איך אני יכול להתגבר על זה ?


while ((Count < numberOfLoops) && (ContinuePlay))
{
for (int i = 0; (i < listBoxFiles.Items.Count) && (ContinuePlay); i++)
{

some code lines...
count++;
}
}

פורסם

א. איזו לולאה ממשיכה, הפנימית או החיצונית?

כדאי שתוסיף את הקוד מסביב כי הקוד שהוספת נראה תקין ובלי הקונטקסט שלו אי אפשר לראות מה הבעיה

פורסם
  • מחבר

שאר הקוד לא רלוונטי כי אחרי ה-STOP הוא יוצא מה-FOR, מקדם את ה-Count וממשיך שוב, הוא לא יוצא מה-WHILE.

פורסם

דבר ראשון כטלאי אתה יכול לבצע if אחרי ה-for על ה-continuesPlay ואם זה שלילי אז לעשות break;

אבל זה לא הפתרון הנכון או המומלץ לפחות שיעבוד לך כרגע.

תנסה להחליף בלולאת ה-while במקומות בין ContinuesPlay לתנאי השני סתם לבדיקה.

ד"א הכי טוב שתדבג את הקוד ותבדוק שבאמת ה-ContinuesPlay נשאר שלילי ולא הופך חיובי משום מה, זה הדבר היחיד שקופץ לי בתור בעיה (בגלל זה צריך את שאר הקוד לראות שלא עשית טעות איפשהו בתוך הלולאות)

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים