הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   דוט נט - לולאת for בתוך טיימר (https://hosts.co.il/forums/showthread.php?t=99514)

trupix 27-08-12 02:14

דוט נט - לולאת for בתוך טיימר
 
הי,

הרבה זמן שלא התעסקתי בפיתוח תוכנה ואני עובד על משהו קטן בVB.NET
השאלה עשויה לבוא לידי ביטוי גם בשפות נוספות, אשמח אם תוכלו לעזור.

יש לי טיימר עם Interval של 4 שניות, בתוכו יש לולאה כזו:

PHP קוד:

For 1 to 10
ListBox1
.Items.AddItem (i)
Next 

ולאחר מכן אני מפסיק את פעולת הטיימר עם enabled = false

זה עובד, אולם כשהטיימר מופעל הוא לא ממתין בין הפעולות שבתוך הלולאה, הוא מוסיף את 10 הפריטים במכה אחת.

אני צריך שהטיימר ימתין בין פעולה לפעולה (בזמן ששווה לInterval שלו)

פתרון ממשי זה להכניס Sleep(4000) לפני הNext, אבל אני משוכנע שיש פיתרון טוב יותר

אני תוהה אם יש לזה קשר לDoEvents ..

תודה לעוזרים!

perfeito 27-08-12 04:56

אני לא חושב שאתה צריך for
לדוגמא אתה יודע שאתה רוצה להכניס 10 פריטים
אבל vb קורא את הfor כפעולה אחת בתוך הטיימר אז הוא עושה אותה :)
אתה צריך להכניס פריט כל 4 שניות אז פשוט במקום for אתה צריך להכניס פריט
לבדוק אם יש כבר 10 פריטים, ואם יש אז אתה מפסיק את ה interval.

אני לא יודע vb אז קח javascript:

תתיחס לזה כמו סודוקוד

קוד:

var arr = [];
var id = setInterval(add);
function add () {
  if (9 == arr.length) clearInterval(id);
  arr.push('foo');
};


trupix 27-08-12 05:27

זה לא כל הכיוון ..

בכול אופן כתבתי פיתרון!

בתוך הלולאה אני מריץ:
PHP קוד:

Do Until Finish =  True
    Application
.DoEvents()
Loop 

כך שבמהלך הלולאה, כל עוד התהליך הקודם לא נגמר - זה ימתין באותו המצב, באותה הלולאה

זה הרבה יותר יעיל עבורי משום שבתוך הלולאה אני מקבל נתונים באמצעות פקד אינטרנט, כך שזה הרבה יותר יציב להמתין עד שהייבוא אכן יסתיים מאשר להקציב לו X שניות,
שעלול ליצור מצב לא נעים אם חיבור האינטרנט איטי.. שזה בעצם הפיתרון שרציתי

תודה על העזרה..

perfeito 27-08-12 06:00

אה... ברור שאתה צריך להמתין למשהו עד שהוא יגיד שסיים, לא אמרת את זה :)
חשבתי שסתם אתה כותב משהו..


כל הזמנים הם GMT +2. הזמן כעת הוא 18:24.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ