Şimdi Ara

Async bir Task'ı seri hale getirme

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
16
Cevap
0
Favori
391
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • CefSharp kullanarak (Chromium için bir C# wrapper) ve WinForms ile HTML sitelerinde JavaScript kodu çalıştırma üzerine hibrit bir program yazıyorum. Takıldığım nokta CefSharp fonksiyonlarının çoğu Async. Mesela GetSourceAsync adında bir method var bu method işini bitirmeden önce diğer işlemlere devam etmemesi gerekiyor çünkü çekeceğim HTML deki bilgileri kullanarak değişik JavaScript fonksiyonları oluşturacağım.

    Örnek Kod:
                var task = _browser.GetSourceAsync();
    task.ContinueWith(taskHtml =>
    {
    var html = taskHtml.Result;
    var parseHtml = new ParseHtml(TraceLine, html); // HTML içeriğini sindirecek class.

    // Buradaki kodlar yukaridaki islemin bitmesini beklemiyor.
    }, TaskScheduler.Default);


    Farklı bir thread kullanamam çünkü background threadler UI threadini değiştiremiyor ve benim yapmaya çalıştığım UI thred üzerinde işlemler.







  • await kullanarak async taskın tamamlanmasını bekleyebilirsin.

    var task = await _browser.GetSourceAsync(); 
  • quote:

    Orijinalden alıntı: GrAy

    await kullanarak async taskın tamamlanmasını bekleyebilirsin.

    var task = await _browser.GetSourceAsync(); 
    Olmuyor. Hala Async gibi davranıyor.
  • Dizel motor, dizel gibi çalışır.

    javascript promise example

    olarak arat google amcada
  • Normalde konudan bağımsız bir Task<> metodu , örneğin ReadAsync

    var task = ReadAsync();
    task.wait() ile beklersin.

    Ancak tam ne yaptığını bilmemekle birlikte tararayıcı davranışlarında genelde bir event olur ona subscripe olursun. Yani o ana kadar dur ve bir şey yapma dersen ui kitlenir.

    Ancak senin örnek verdiğin kod javascript ise, async bir metodu sekron çalıştırmayı beklemek yerine akısı onun bitişine göre (promise dönüyorsa then ile, callback varsa callbackde devame ttirmelisin.)



    < Bu mesaj bu kişi tarafından değiştirildi mahoni_38 -- 10 Temmuz 2019; 9:32:59 >
  • mahoni_38 kullanıcısına yanıt
    Anladığım kadarıyla en fazla JavaScript kodunun çalıştırılması başlayana kadar bekletebilirim fakat benim yapmaya çalıştığım JavaScriptin çalıştırılması bitinceye kadar bekletmekti fakat bunu CefSharp ile yapmak sanırım mümkün değil. Yine de teşekkürler.


  • işine yarayabilir js çalıştırmayla ilgili şeyler var




  • quote:

    Orijinalden alıntı: Delifisek.Tux

    Dizel motor, dizel gibi çalışır.

    javascript promise example

    olarak arat google amcada
    Promise'i yakalamayı CefSharp desteklemiyor malesef

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • GitHub
    Which is better communicating using XHR requests or Using JS Binding ? · Issue #495 · cefsharp/CefSharp
    https://github.com/cefsharp/CefSharp/issues/495#issuecomment-57585156




  • quote:

    Orijinalden alıntı: Delifisek.Tux

    https://github.com/cefsharp/CefSharp/issues/495#issuecomment-57585156
    Hepsini okudum sorunumla alakalı bir şey bulamadım.
    Zahmetli de olsa mecbur HTTP protokolü üzerinden gideceğim artık.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Diyorki

    İş bitince callback yapacaksın.

    Yani ?

    AsyncFunction(param1,Param2,callbackFunc) {
    antin;
    kuntin;
    hede;
    hodo;
    // dayı bu an itibari ile işimiz bitti
    // ohalde
    callbackFunc;
    }
  • quote:

    Orijinalden alıntı: Delifisek.Tux

    Diyorki

    İş bitince callback yapacaksın.

    Yani ?

    AsyncFunction(param1,Param2,callbackFunc) {
    antin;
    kuntin;
    hede;
    hodo;
    // dayı bu an itibari ile işimiz bitti
    // ohalde
    callbackFunc;
    }
    Onu anladım. Sıkıntı şu ki o antin kuntin kısımlar async olarak sitede JavaScript çalıştırıyor ve onun bitip bitmediğini öğrenmem lazım.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Async request için de async mı çalıştırıyorsun ?

    Welcome to the callback hell.

    Her biri için ayrı bir callback ayarlayıp ancak öyle yapabilirsin.
  • quote:

    Orijinalden alıntı: Delifisek.Tux

    Async request için de async mı çalıştırıyorsun ?

    Welcome to the callback hell.

    Her biri için ayrı bir callback ayarlayıp ancak öyle yapabilirsin.
    Olayı anlatamadım hala, neyse çözüm buldum zaten

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.