Wie Thread warten lassen?

28/07/2009 - 09:20 von Marko | Report spam
Hallo,

ich brauche eine Methode die auf ein Ergebnis wartet, so wie
"Delegate.EndInvoke".
Das Problem ist das Ergebnis von einem Unbekannten Thread geliefert wird
"Thread.Join" scheidet also aus.

Public Function Resultat() as T
Do
Thread.Sleep(10)

Synclock m_lockObj
If m_fertig Then Exit Do
End Synclock
Loop

Return m_result
End Function

Diese Lösung ist mit als einziges eingefallen, aber gefàllt mir absolut
nicht... gibts was besseres?

mfg Marko
 

Lesen sie die antworten

#1 Elmar Boye
28/07/2009 - 11:44 | Warnen spam
Hallo Marko,

Marko schrieb:
Hallo,

ich brauche eine Methode die auf ein Ergebnis wartet, so wie
"Delegate.EndInvoke".
Das Problem ist das Ergebnis von einem Unbekannten Thread geliefert wird
"Thread.Join" scheidet also aus.

Public Function Resultat() as T
Do
Thread.Sleep(10)

Synclock m_lockObj
If m_fertig Then Exit Do
End Synclock
Loop

Return m_result
End Function

Diese Lösung ist mit als einziges eingefallen, aber gefàllt mir absolut
nicht... gibts was besseres?



Aus Deinem Codeschnippsel kann man nicht erkennen,
was da wirklich passiert (z. B. wer setzt m_fertig).

Eine Lösung könnte bei Monitor sein, siehe Beispiel dort:
<URL:http://msdn.microsoft.com/de-de/lib...e.aspx>

oder auch AutoResetEvent
<URL:http://msdn.microsoft.com/de-de/lib...t.aspx>

Gruß Elmar

Ähnliche fragen