נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: Threads

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
feint
משתמש פעיל
משתמש פעיל
סמל אישי

הצטרף / הצטרפה: 01 March 2005
משתמש: מנותק/ת
הודעות: 53
נשלח בתאריך: 20 April 2005 בשעה 22:29 | IP רשוּם
ציטוט feint

אהלן...

אני צריך לדמות מין משחק שכזה בהעברת כדור.

כאשר כל THREAD מחזיק בכדור 2 שניות ומעביר אותו הלאה בצורה מעגלית.

הפונקציה של כל THREAD היא:

קוד:

public void play()

{

if (ball.ballStatus) Monitor.Wait(this); // error

while (true)

{

lock (this)

{

ball.ballStatus = true;

}

//text box

tb.Text = "Thread number " + serial + " is holding the ball";

Thread.Sleep(2000);

ball.ballStatus = false;

if (threads.Count > 1)

{

Monitor.Pulse((BallPlayer)threads[serial%threads.Count]);

}

}

}

הבעיה היא כאשר אני מוסיף THREAD שני אני מקבל את ה ERROR הבא:

An unhandled exception of type 'System.Threading.SynchronizationLockException' occurred in mscorlib.dll

Additional information: Object synchronization method was called from an unsynchronized block of code.

כאשר מתבצעת הפקודה MONITOR.WAIT.

 

 



__________________
-feint
חזרה לתחילת העמוד הצג את כרטיס החבר של feint חפש הודעות אחרות של feint
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 21 April 2005 בשעה 13:04 | IP רשוּם
ציטוט ניר

דבר ראשון מבחינת תכנות מקבילי יש לך שגיאה.
במקום
קוד:
if (ball.ballStatus) Monitor.Wait(this);


הייתי כותב:
קוד:
while (ball.ballStatus) Monitor.Wait(this);



דבר שני - לפי ההודעת שגיאה - נראה כי קריאה ל-wait חייבת להיות מתוך בלוק נעול על ידי lock.

חזרה לתחילת העמוד הצג את כרטיס החבר של ניר חפש הודעות אחרות של ניר בקר בדף הבית של ניר
 
feint
משתמש פעיל
משתמש פעיל
סמל אישי

הצטרף / הצטרפה: 01 March 2005
משתמש: מנותק/ת
הודעות: 53
נשלח בתאריך: 21 April 2005 בשעה 15:33 | IP רשוּם
ציטוט feint

נסיתי לעשות את ה LOCK. לא עזר.

 



__________________
-feint
חזרה לתחילת העמוד הצג את כרטיס החבר של feint חפש הודעות אחרות של feint
 
cp77fk4r
מנהל פורומים
מנהל פורומים
סמל אישי
מנהל פורום אבטחת מידע

הצטרף / הצטרפה: 09 April 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 501
נשלח בתאריך: 21 April 2005 בשעה 19:14 | IP רשוּם
ציטוט cp77fk4r

למה יש לך שם This?

__________________
[Th3rE R mAnY wAyZ 2 r3aD oN3 EmPty p4gE]
חזרה לתחילת העמוד הצג את כרטיס החבר של cp77fk4r חפש הודעות אחרות של cp77fk4r בקר בדף הבית של cp77fk4r
 
feint
משתמש פעיל
משתמש פעיל
סמל אישי

הצטרף / הצטרפה: 01 March 2005
משתמש: מנותק/ת
הודעות: 53
נשלח בתאריך: 21 April 2005 בשעה 19:15 | IP רשוּם
ציטוט feint

לעצור את ה THREAD. (?)

 



__________________
-feint
חזרה לתחילת העמוד הצג את כרטיס החבר של feint חפש הודעות אחרות של feint
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה