24 Kasım 2010, ÇARŞAMBA
Yeni bir iş parçacığı tarayıcı Kontrol
Uri "" m Uri başına web tarayıcı yeni bir kontrol oluşturmak için çalışıyor."bunu başarmak İçin tıklandığında istediğim bir listesi var. Uri başına yeni bir konu oluşturun. Yaşıyorum sorun belge yüklenmeden önce iş parçacığı sonunda, hiç DocumentComplete olayı yararlanmak için olsun. Bunu nasıl bitireceğim?
var item = new ParameterizedThreadStart(ClicIt.Click);
var thread = new Thread(item) {Name = "ClickThread"};
thread.Start(uriItem);
public static void Click(object o)
{
var url = ((UriItem)o);
Console.WriteLine(@"Clicking: " url.Link);
var clicker = new WebBrowser { ScriptErrorsSuppressed = true };
clicker.DocumentCompleted = BrowseComplete;
if (String.IsNullOrEmpty(url.Link)) return;
if (url.Link.Equals("about:blank")) return;
if (!url.Link.StartsWith("http://") && !url.Link.StartsWith("https://"))
url.Link = "http://" url.Link;
clicker.Navigate(url.Link);
}
CEVAP
24 Kasım 2010, ÇARŞAMBA
Pompalar bir ileti döngüsü olan bir STA iş parçacığı oluşturmak zorunda. Bu Tarayıcı gibi ActiveX bileşeni için sadece misafirperver bir ortam. DocumentCompleted olayı yoksa alamazsın. Bazı örnek kod:
private void runBrowserThread(Uri url) {
var th = new Thread(() => {
var br = new WebBrowser();
br.DocumentCompleted = browser_DocumentCompleted;
br.Navigate(url);
Application.Run();
});
th.SetApartmentState(ApartmentState.STA);
th.Start();
}
void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
var br = sender as WebBrowser;
if (br.Url == e.Url) {
Console.WriteLine("Natigated to {0}", e.Url);
Application.ExitThread(); // Stops the thread
}
}
Bunu Paylaş:
O'un yeni yapılar yerine düz eski...
Ne zaman App Engine zamanlayıcı yeni b...
Veya geçerli iş parçacığı olup olmadığ...
Nasıl geçerli iş parçacığı ana iş parç...
Nasıl yeni bir dil özelliklerini kulla...