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

  • Alexander Johnson

    Alexander Jo

    26 Temmuz 2008
  • Madeon

    Madeon

    31 Ocak 2010
  • Truc Minh

    Truc Minh

    23 Ocak 2011