Hej, Titta på typ ett ManualResetEvent eller något annat kul, mycket trevligare att ha att göra med i sådana här fall; enklare, stabilare, bättre och snyggare. Tack, fast problemet är att tråd #2 startad av Application.Run Spelar ingen roll, det du ska göra är att ersätta din sleep-loop med en wait, och där du sätter din flagga till true med en set. När du går ur loopen/på annat lämpligt ställe ska du anropa ResetVänta på event
jag har ett litet problem
jag har en klass (Klass 1), i konstruktorn till den klassen skapar jag en tråd.
I tråden skapar ajg i sin tur en annan klass (Klass 2) samt lyssnar på ett event från klass2
När jag sedan anropar en metod i Klass får den inte gå ur den förrens ett event i klass 2 har raisat så vad jag gör är
While(Not mExecutableFinished)
Thread.Sleep(50)
End While
i eventmetoden gör jag detta
Private Sub OnExecutionDone(ByVal sender As Object, ByVal e As InterProcessMessaging.ExecutionResultsEventArgs)
mResult = e.Result
mExecutableFinished = True
End Sub
Jag har lagt en break point i Klass 2 och den raisar eventet i sin tråd, men klass 1 lämnar inte while loopen och därför får den alrig eventet
Vad göra?Sv: Vänta på event
Den kommer hjälpa dig med följande:
Tråd #1 anropar Wait-metoden på manualreseteventet, väntar tills a) timeout gått (ställbar) eller b) Set-metoden anropats av tråd #2
Ligger i System.Threading-namespacetSv:Vänta på event
vad jag gör är att jag har ett konsolprogram
Den ska anteera batchkörningar, för att jag ska veta hur batcen gick måste programmen i batchen skicka ett windowsmedelande.
Wndowsmedelanden kräver ett form
så jag har ett form i mitt konsolprogram
I konstruktorn för Formet (Klass2) ovan så kör jag applikation.run så att den hamnar i en egen tråd...
Konsolprogrammets klass (Klass1) ovan ligger kvar i sin egen tråd...Sv: Vänta på event