נשלח בתאריך: 20 April 2005 בשעה 22:29 | | IP רשוּם
|
|
|
|
אהלן...
אני צריך לדמות מין משחק שכזה בהעברת כדור.
כאשר כל 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
|