ile işlenmesini bekliyorum Kodu web sitesi yüklenene kadar durdurmak istiyorum (Windows.Forms.WebBrowser kullanıyorum). AutoResetEvent kullanmam gerektiğini okudum, ancak daha önce iş parçacığı ile ilgili bir sınıf kullanmıyorum. Bu kodu yazarım ama sadece programımı dondur, nasıl düzeltirsin? Sen asenk yararlanabilirlerOlayın AutoResetEvent
var evt = new AutoResetEvent(false);
webBrowser.DocumentCompleted += (sender1, e1) =>
{
if (webBrowser.ReadyState == WebBrowserReadyState.Complete)
{
evt.Set();
}
};
webBrowser.Navigate("https://www.google.com/");
evt.WaitOne(); //wait to evt.Set() call
//...
//further code
Olası yinelenen [Konu tamamen GUI donar] (http: // stackoverflow .com/question/10423966/thread-totally-freezes-the-gui) –
Neden WaitOne'den sonra DocumentCompleted olay işleyicisine kodu taşımak değil? –
DocumentCompleted olayı, yalnızca UI iş parçacığınız boşken tetiklenebilir. Boşta değil, WaitOne() çağrısında kalmış. Buna deadlock denir. * UI iş parçacığını asla * engellemeyin. WaitOne çağrısından sonra, DocumentCompleted olay işleyicinize kodu taşımanız yeterlidir. –