• 05-05-2020, 13:23:21
    #1
    Merhaba, C# 'ta task ile yaptığım birkaç işlem var.
    işlem devam ederken tamamlanmasını beklemeden programı kapatmam gerekiyor.
    Kapattığım zaman BeginInvoke sonlanmadığı için hataya giriyor.
    new System.Threading.Thread(() =>
    {
    try
    {
    var taskList = new List<Task>
    {
    Task.Factory.StartNew(() =>
    {
    BeginInvoke((Action)delegate {
    //Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, (new Action(delegate{
    });
    }),
    Task.Factory.StartNew(() =>
    {
    ...
    })
    Task.WaitAll(taskList.ToArray());
    }
    catch (Exception ex)
    {
    Invoke((MethodInvoker)delegate
    {
    MessageBox.Show(Popup, "Arama İşleminde Hatayla Karşılaşıldı!\n" +
    "Hata Kodu: " + ex.StackTrace, "HATA", MessageBoxButtons.OK, MessageBoxIcon.Stop);
    });
    }
    })
    {
    IsBackground = true
    }.Start();
    Karşılaşılan hata "Pencere işleyicisi oluşturuluncaya kadar denetim üzerinde Invoke veya BeginInvoke çağrılamaz."
  • 05-05-2020, 13:31:38
    #2
    Hocam muhtemelen tüm nesneler initialize olmadan senin metodun işlem yapmaya çalşıyor. https://stackoverflow.com/questions/...dow-handle-has belki yardımcı olabilir
  • 05-05-2020, 14:29:18
    #3
    InternettinHoca adlı üyeden alıntı: mesajı görüntüle
    Hocam muhtemelen tüm nesneler initialize olmadan senin metodun işlem yapmaya çalşıyor. https://stackoverflow.com/questions/...dow-handle-has belki yardımcı olabilir
    Denedim task 'ın içindeki beginInvoke satırlarında vermedi hatayı . IsHandleCreated denedikten sonra Catch 'e düştü. yani tam anlamıyla sonuçlandırmıyor işlemlerini.
    catch (Exception ex)
    {
    Invoke((MethodInvoker)delegate
    {
    MessageBox.Show(Popup, "Arama İşleminde Hatayla Karşılaşıldı!\n" +
    "Hata Kodu: " + ex.StackTrace, "HATA", MessageBoxButtons.OK, MessageBoxIcon.Stop);
    });
                    }
    Buraya düşüyor hata kodu yine aynı
  • 05-05-2020, 14:34:08
    #4
    Hocam akşama doğru müsait olunca bağlanıp bakabilirim
  • 05-05-2020, 22:47:18
    #5
    Belirtmeyi unuttum task lar winform UI 'de çalışıyorlar bunları form u kapattığım anda kapatmam lazım.



    tokensource ve tokensource.dispose() ile halledildi. teşekkür ederim.
    System.Threading.CancellationTokenSource tokenSource = new System.Threading.CancellationTokenSource();