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

  • BumbleDroid

    BumbleDroid

    18 EKİM 2010
  • Tips On Linux

    Tips On Linu

    26 Temmuz 2008
  • tsweeney79

    tsweeney79

    21 Ocak 2008