עבור לתוכן

צריך עזרה קטנה עם Timer ב-C#

Featured Replies

פורסם

אז מה כן מוצג בתווית?

פורסם

מוצג הזמן הנכון מתי הקובץ הבא יגיע אבל הוא לא סופר אחורה אלא נשאר ככה אולי ?

פורסם
  • מחבר

כן בדיוק זה מה שקורה לי

פורסם

הפעלת את הטיימר?

פורסם
  • מחבר

כן, בתוך ה-if הראשון


public void timer1_Tick(object sender, EventArgs e)
{
if (groupBoxSelect.Enabled == false)
{
timer1.Start();
if (nextFileDelay != null)
{
double delayForFile = nextFileDelay.nextFileIn;




if (delayForPacket > 1)
{
labelStatus.Text = "Waiting for next file... " + "(" + (delayForPacket) + " milliseconds)";
}
else
{
timer1.Stop();
}




delayForFile--;
}
}
}

פורסם
  • מחבר

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

פורסם

או שאתה יכול לנסות להתחשב בזה בחישוב הזמן שאתה מפעיל את ה Timer.

או שאתה יכול לנסות לעבור שפה - כי באופן תיאורטי, C# וכל שפה שרצה על מכונה וירטואלית (או "מתורגמת לקוד ביניים") לא יכולה להיות Real Time אמיתית.

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

פורסם
  • מחבר

לשנות שפה לא רלוונטי כרגע אז מה שנשאר לי זה להתחשב בזמן, האם הכי פשוט לעשות זה למדוד עם datetime מהזמן איך שאני יודע מתי שהקובץ הבא אמור להגיע ועד שהטיימר נכנס לפעולה ולהוריד מהזמן שהטיימר אמור לספור את הזמן הזה ?

פורסם
  • מחבר

תודה רבה.

ארכיון

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

דיונים חדשים