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

  • AverageBroTV

    AverageBroTV

    20 Mart 2013
  • EEVblog

    EEVblog

    4 NİSAN 2009
  • Pituvision

    Pituvision

    11 Mart 2006