none
Async-Await Sayfa Yüklendikten Sonra Verinin Çekilmesini Sağlama(Webbrowser) RRS feed

  • Soru

  • Merhabalar.

    Benim sorunum, butona tıkladığımda webbrowser'daki döküman yüklenmeden veriyi çekmeye çalışması.

    Bayağı uğraştım ama sorunu çözemedim.Yardımcı olur musunuz?

    Kodlarım:

    private async void BtnTask_Click(object sender, EventArgs e)
    {
        if (radioBtnTask1.Checked)
        {
            await Task1();
        }
        else if (radioBtnTask2.Checked)
        {
            await Task2();
        }
    }
    
    private async Task Task1()
    {
        await PageLoadAsync();
        MessageBox.Show("Page loaded!");
        HtmlElementCollection buttons = webBrowser.Document.GetElementsByTagName("button");
    }
    
    private async Task PageLoadAsync()
    {
        webBrowser.Navigate("https://url.com");
        await webBrowser.LoadingAsync();
    }
    
     public static class Browser
        {
            public static Task<Uri> LoadingAsync(this WebBrowser wb)
            {
                var tcs = new TaskCompletionSource<Uri>();
                WebBrowserDocumentCompletedEventHandler handler = null;
                handler = (_, e) =>
                {
                    wb.DocumentCompleted -= handler;
                    tcs.TrySetResult(e.Url);
                };
                wb.DocumentCompleted += handler;
                return tcs.Task;
            }
        }
    7 Nisan 2020 Salı 11:54

Yanıtlar

Tüm Yanıtlar

  • ContinueWith ile veriyi çekmeyi denedin mi?

    örnek; 

    await webBrowser.LoadingAsync().ContinueWith((t) =>{ //burada veriyi çek });

    TR| Sorunuzun yanıtı bu ise "Yanıt Olarak Öner" olarak işaretleyin, eğer faydalı bir yorum ise "Oy Ver"erek forumun işleyişine katkıda bulunabilirsiniz. EN| If this is the answer to your problem, mark "Propose as Answer" and if it is helpful, you can contribute to the workig of the forum by "Voting".

    7 Nisan 2020 Salı 14:03

  • Denedim.Aşağıdaki koda geldiğinde belirtilen atama geçerli değil. hatası alıyorum.

     HtmlElementCollection buttons = webBrowser.Document.GetElementsByTagName("button");

    (Async programlamada yeniyim.Windows formda bir uygulama yazıyordum.Amacım sayfadaki butonları çekip bazı butonlara tıklatmaktı.Fakat bu işlemi yaparken başka bir işlem yapamıyordum.Bu sorunu çözmek için çözüm yolu arıyorum.)


    • Düzenleyen Brahimm 7 Nisan 2020 Salı 14:31
    7 Nisan 2020 Salı 14:30
  • https://stackoverflow.com/questions/59473425/system-windows-forms-webbrowser-wait-until-page-has-been-fully-loaded/59474276#59474276

    Sayfasındaki kodu uygulamama uyarladım ama nerede hata yaptığımı çözemedim.

    Güncellendi

    Yukarıdaki kodlarda sorun yokmuş.Farklı bir yerde hata yapmışım.

    Yukarıdaki linkte bulunan kodlar çalışıyor.


    • Düzenleyen Brahimm 7 Nisan 2020 Salı 18:11
    • Yanıt Olarak İşaretleyen Brahimm 7 Nisan 2020 Salı 18:11
    7 Nisan 2020 Salı 14:37