Ich habe ein bisschen Code, den ich nicht richtig herausfinden kann. Das Problem ist, dass das Programm multithreaded ist und innerhalb ein Stück Code, das ich schrieb so diese synchronisiert werden soll:C# Multithreading-Problem mit Monitor-Klasse - möglicher Lifelock?
lock (lockObject)
{
if (!Monitor.TryEnter(lockObject))
Monitor.Wait(lockObject);
//do stuff...
Monitor.PulseAll(lockObject);
}
Monitor.Exit(lockObject);
das Problem, das ich habe, ist, dass in einem gewissen Punkt in der Zeit alle Threads zu sein scheinen Schlafen - kann jemand sagen warum? Das Programm läuft endlos weiter und verbraucht fast keine CPU, aber es wird keine Arbeit erledigt - beim Nachverfolgen des Programms habe ich herausgefunden, dass zu irgendeinem Zeitpunkt kein Thread aktiv ist, aber eine ganze Menge von ihnen schläft. Ich kenne den Fehler meistens (; im Falle eines Entwicklers - immer) sitzt 0,5m vor dem Monitor - aber ich kann es mir selbst nicht vorstellen ... vielleicht in ein paar Minuten;)
kann mir bitte jemand das erklären ich - danke im voraus.
Ist das LockObject, das Sie sperren, dasselbe, das Sie einen Monitor.TryEnter ausführen, oder sperren Sie den Typ LockObject? –
ja - das war ein klassischer Tippfehler – Gambrinus