• 09-08-2015, 12:02:30
    #1
    Webbrowser kullanıyorum, webbrowser yüklendiği zaman işlem yaptırmaya çalışıyorum ama olmuyor.Aşağıdaki kod foreach daki döngü tam bittikten sonra WebDocumentCompleted çalışıyor , döngünün her adımında WebDocumentCompleted e düşmesini istiyorum ama olmuyor.
    private void button1_Click(object sender, EventArgs e)
     {
                foreach (var user in userList)
                {
                    for (int i = 0; i < 10; i++)
                    {
                        Method(user, i);
                    }
                }
    }
    
    private void Method(String user, Int32 id)
    {
                webBrowser1.Navigate(url+user+id);
                webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebDocumentCompleted);
    }
    
    void WebDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
             //işlemler
    }
  • 09-08-2015, 13:14:44
    #2
    osal adlı üyeden alıntı: mesajı görüntüle
    Webbrowser kullanıyorum, webbrowser yüklendiği zaman işlem yaptırmaya çalışıyorum ama olmuyor.Aşağıdaki kod foreach daki döngü tam bittikten sonra WebDocumentCompleted çalışıyor , döngünün her adımında WebDocumentCompleted e düşmesini istiyorum ama olmuyor.
    private void button1_Click(object sender, EventArgs e)
     {
                foreach (var user in userList)
                {
                    for (int i = 0; i < 10; i++)
                    {
                        Method(user, i);
                    }
                }
    }
    
    private void Method(String user, Int32 id)
    {
                webBrowser1.Navigate(url+user+id);
                webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebDocumentCompleted);
    }
    
    void WebDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
             //işlemler
    }
    Hocam aslında her seferinde çalışması gerektiği gibi çalışıyor fakat for döngüsü senin gözünle görebiliceğinden çok daha hızlı bir şekilde bu işlemleri yaptığı için sen sadece son işlemin etkisini görebiliyosun özellikle navigate gibi bir event için belli bir süre gerekli sayfanın açılması için bu yüzden yaptığın şey maalesef mümkün değil, timer ve counter kullanarak istediğin şeyi elde edebilirsin.
  • 09-08-2015, 15:10:36
    #3
    oguzhane adlı üyeden alıntı: mesajı görüntüle
    Hocam aslında her seferinde çalışması gerektiği gibi çalışıyor fakat for döngüsü senin gözünle görebiliceğinden çok daha hızlı bir şekilde bu işlemleri yaptığı için sen sadece son işlemin etkisini görebiliyosun özellikle navigate gibi bir event için belli bir süre gerekli sayfanın açılması için bu yüzden yaptığın şey maalesef mümkün değil, timer ve counter kullanarak istediğin şeyi elde edebilirsin.
    hocam event in bitmesini bekleyecek bir kod v.s. varmı, onu nasıl yapacağız, event sonucu beklenmeden döngü dönüyor o zamanda istediğim gibi çalışmıyor
  • 09-08-2015, 15:58:14
    #4
    Webbrowser içindeki işlemleri thread ile çalıştırıp, döngüde threadın bitip bitmediğini while ile kontrol ederek bekletebilirsiniz döngüyü.
  • 09-08-2015, 16:08:21
    #5
    Üyeliği durduruldu
    kaç tane metod ekliyorsun webbrowser a herseferinde ekletme bence
  • 09-08-2015, 16:19:48
    #6
    osal adlı üyeden alıntı: mesajı görüntüle
    hocam event in bitmesini bekleyecek bir kod v.s. varmı, onu nasıl yapacağız, event sonucu beklenmeden döngü dönüyor o zamanda istediğim gibi çalışmıyor
    sıkıntı navigate eventinin belli bir süre istemesi for döngüsü hepsini anında yapıyor, for döngüsüyle böyle birşey yapamazsın.(yapılabilir fakat çok uzun sürer ve sıkıntılı olabilir)
  • 09-08-2015, 16:35:23
    #7
    ObreuS adlı üyeden alıntı: mesajı görüntüle
    Webbrowser içindeki işlemleri thread ile çalıştırıp, döngüde threadın bitip bitmediğini while ile kontrol ederek bekletebilirsiniz döngüyü.
    o durumda farklı sorunlar oluşturuyor, daha farklı bir durum olsa aslında benim sorunumu çoğu kişinin yaşaması lazım ama çok bilgi bulamadım internette

    ShadowsTR adlı üyeden alıntı: mesajı görüntüle
    kaç tane metod ekliyorsun webbrowser a herseferinde ekletme bence
    Mecburen yapmak zorundayım, webbrowser üzerinden veri çekiyorum, başka türlü veri çekmeyi engellemişler

    oguzhane adlı üyeden alıntı: mesajı görüntüle
    sıkıntı navigate eventinin belli bir süre istemesi for döngüsü hepsini anında yapıyor, for döngüsüyle böyle birşey yapamazsın.(yapılabilir fakat çok uzun sürer ve sıkıntılı olabilir)
    evet işte buna çözüm arıyorum, amacım webbrowser dolunca veri çekmek ,başka türlü çektiğim site engelliyor
  • 09-08-2015, 16:46:58
    #8
    ben genelde eğer webbrowserden dönen bir sonucu bekleyeceksem şu şekilde yapıyorum.

    do{application.doevents();}while(webbrowser.ReadyS tate!=WebBrowserReadyState.Complete);

    elle yazdım yazım yanlışı olabilir. Ve de bunun altına kendim bir bekleme komutu yazıyorum.
    Bu do-while amacı, webbrowserin navigate ettiği sayfayı yüklemeyi beklemesidir. Ancak son teknolojilerle birlikte sayfalar ajax majax değişik şeyler yüklediği için bu da garanti sonuç vermiyor dediğim gibi altına 3 saniye bekleyeceğim bir fonksiyon yazdım. Webbrowser complete olduktan ve 3 saniye geçtikten sonra alacağımı alıyorum tarayıcıdan devam ediyorum.
  • 09-08-2015, 17:20:40
    #9
    1- webbrowser ile yaptığın işi başka türlü de yapabilirsin, sadece yapmayı bilmiyorsundur..
    2- acayip saçma yazmışsın, sürekli eventi ekletiyorsun ama aynı nesneye, böyle kodlama olmaz?
    3- sorundan da çok bir şey anlamadım.. her metod tamamlandığında mı çalışsın istiyorsun yoksa hepsi bittikten sonra mı?

    ----

    ama genel olarak ya kendi event handlerını yazacaksın ya da dinamik olarak webbrowser oluşturup her birinin eventini ayrı ayrı create edeceksin. Tam olarak istediğini anlatabilirsen, bir örnek yapabilirim