SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jonathan Morrison

    Jonathan Mor

    24 Mart 2010
  • JorteexHD

    JorteexHD

    20 NİSAN 2012
  • уσ ρℓz sυв ιℓℓ sυв вαcқ

    уσ ρℓz

    14 EKİM 2010