עבור לתוכן

שאלה לגבי פונקציות ומשתנים ב- C#

Featured Replies

פורסם

שלום,

 

יש לי THREAD נפרד שמפעיל התראה קולית כל עוד ערך BOOLEAN TRUE. כאשר אני משנה את הערך של המשתנה לfalse בתוכנית הראשית אז המשתנה לא מתעדכן ב- THREAD.

 

איך מעדכנים משתנה ב- THREAD בזמן הריצה שלו. ז"א אומרת צריך ליצור EVENT שיתריע על השינוי אבל איך מעדכנים את ה- THREAD?

 

תודה לעונים

פורסם

אין EVENT כזה אבל לא צריכה להיות שום בעיה להחזיק אובייקט משותף שגם התוכנית הראשית וגם ה-thread יכולים לגשת אליו.

פורסם
  • מחבר

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

פורסם

ב-C#  סוגים בסיסיים של המערכת הם משהו קצת מיוחד (בוליאני הוא גם immutable) לא סתם אמרתי אובייקט.

 

יעזור אם תביא חתיכת קוד רלוונטית

פורסם
  • מחבר
            while (Alarm)
            {
                Thread t = new Thread(alarmON);
                t.Start();
                if (showMassge)
                {
                    showMassge = false;
                    DialogResult dr = MessageBox.Show("caution! you over the yellow limit", "YELLOW WARNNING", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    if (dr.Equals(DialogResult.OK))
                    {
                        Alarm = false;
                        t.Abort();
                        sp.Pause();
                    }
                }

            }
          
            
        }

        private void alarmON()
        {
            
                while (this.Alarm)
                {
                   
                    this.Invoke(new Action(() =>
                    {
                        sp.SpeakAsync("caution! you over the yellow limit");

                    }));

                }
                   
        }

 

פורסם
  • מחבר

איך אני מעדכן את ה- THREAD שנקרא alarmON  שהמשתנה הבוליאני Alarm השתנה ל - false ושיפסיק להשמיע התראה

פורסם

אני לא רואה את ההגדרה של Alarm, תנסה להגדיר אותו כ-volatile כדי שהקומפיילר ידע שניגשים אליו מכמה threads.

פורסם
  • מחבר

volatile  boolean Alarm? ככה להגדיר?

 

גם לא עובד ככה...עכשיו בדקתי

ארכיון

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

דיונים חדשים