içinde çalışan bir sınıf içinde bir WebBrowser çalıştıran bazı metin verileri kazıyarak WebBrowser denetimi kullanan bir sınıf oluşturdum, başlangıçta bir Windows Forms uygulamasında çalıştıran, şimdi dönüştürdüm Bir konsol uygulaması, sınıfım bir iş parçacığı içinde çalıştırın ve STA olarak ayarlayın, sonra benim sınıfın içinde "yeni" anahtar sözcüğünü kullanarak WebBrowser'ı normal şekilde örneklendiririm, sorun iş parçacığı tamamlandığında gerçekten bitmeyecek Thread.Join() kullandığımda sonsuz beklemeye girerim ve Application.ThreadExit() işlevini kullanırsam hiçbir şey olmuyor, bu yüzden Thread.Abort() yöntemini denedim ve bu rastgele istisnalar atmaya devam ediyor, sorum şu doğru yol nedir? WebBrowser'ı bir Konsol uygulamasında başlatması gereken bir sınıfı çalıştırmak için. Ben aşağıdakileri yapınKonsol uygulaması: STA iş parçacığı
var th = new Thread(() =>
{
var br = MyBrowsingClass;
br.NavigateTo(url);
System.Windows.Forms.Application.Run();
});
th.SetApartmentState(ApartmentState.STA);
th.Start();
return th;
ve benim sınıf içinde: İstediğin düşünüyorum çünkü
wb = new WebBrowser();
wb.ScriptErrorsSuppressed = true;
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(OnWebComplete);
CurrentState = Status.Navigating;
if (IsValidURL(GoogleQueryURL))
{
wb.NavigateTo(GoogleQueryURL);
}
den Application.Run() ', yalnızca bir örnek olabilmesidir 'sorun. Bu yüzden paralel içerik geri dönüşü kolayca yapılamaz. Application.Exit() işlevini çağırarak "Application.Run()" işlevini sonlandırabilir ya da 'kukla' bir form oluşturabilir ve 'Application.Run (form1)' dizinine geçirebilir ve form1.Close() işlevini kapatabilirsiniz. ama aşağıda sağladığım gibi, "WebRequest" sınıfına bir göz atmalısınız. –