none
metot bitmeden resmi gösteremiyorum RRS feed

  • Soru

  • Merhabalar wpf ile bir resmin olayına aşağıdaki gibi basit bir kod yazdım.

    Fakat metniMatriseYerlestiripSikistir çalışması uzun sürmekte ve onun çalışması bitmeden

    resim.Visibility = Visibility.Visible;

    satırım resmi gösterememekte.

    metniMatriseYerlestiripSikistir metodu bittikten sonra resmim görünüyor.

    private void btnDosyaYukle_MouseDown(object sender, MouseButtonEventArgs e)
            {            
                        resim.Visibility = Visibility.Visible;
                        metniMatriseYerlestiripSikistir(txtVeri.Text, orjinalAd);
              }
    Nasıl bir çözüm bulabilirim?

    17 Aralık 2018 Pazartesi 07:49

Tüm Yanıtlar

  • private void btnDosyaYukle_MouseDown(object sender, MouseButtonEventArgs e)
    {            
        resim.Visibility = Visibility.Visible;
        Task.Run(() => metniMatriseYerlestiripSikistir(txtVeri.Text, orjinalAd));
    }

    şeklinde denermisiniz.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    17 Aralık 2018 Pazartesi 07:59
    Moderatör
  • private void btnDosyaYukle_MouseDown(object sender, MouseButtonEventArgs e)
            {            
                        resim.Visibility = Visibility.Visible;
                        this.Dispatcher.BeginInvoke((Action) (()=>{metniMatriseYerlestiripSikistir(txtVeri.Text, orjinalAd);}));
              }

    Eğer kullandığınız metot herhangi bir UI nesnesine erişiyorsa yukarıdaki kullanımı tavsiye ederim. Bu sayede çapraz thread erişimi yapmamış olacaksınız.

    http://dotnetpattern.com/wpf-dispatcher


    www.cihanyakar.com


    17 Aralık 2018 Pazartesi 08:14
  • Maalesef, yine alttaki metot bittikten sonra gözüktü :(

    C#

    17 Aralık 2018 Pazartesi 08:26
  • Task.Run yazdığımız satırda

    System.InvalidOperationException: 'Başka bir iş parçacığına ait olduğundan çağıran iş parçacığı bu nesneye erişemiyor.'

    hatasını aldım. 

    :(


    C#

    17 Aralık 2018 Pazartesi 08:27
  • İlginç.

    İlgili metodunuz resmi gizlemiyor değil mi?

    Metodu şöyle değiştirip deneyin:

    private void btnDosyaYukle_MouseDown(object sender, MouseButtonEventArgs e)
            {            
                        resim.Visibility = Visibility.Visible;
                        this.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background,(Action) (()=>{metniMatriseYerlestiripSikistir(txtVeri.Text, orjinalAd);}));
              }


    www.cihanyakar.com

    17 Aralık 2018 Pazartesi 08:56