04-26-2017 07:23 AM
Merhaba,
State machine yapısını kullanarak bir uygulama geliştirdim. Tam zamanlı olarak data alıyorum. Bir butonun eventinde yaptığım işlemin zamanı fazla sürüyor. Ve ekranda bu işlem bitene kadar donma gözlemliyorum. Eventin içinde yaptığım işlemi bir thread de yapabilir miyim? Bu şekilde UI thread den bağımsız olmasını istiyorum. Not: Threadli bir yapıya da geçerek halledilebileceğini biliyorum. Fakat kısa bir çözüm gerekiyor. Bir başka anlatımla şöyle diyebilirim. Buton eventinde ekrana mesaj çıksın ancak arkadaki kodum bu mesajı beklemesin gibi mantık istiyorum. Yardımcı olabilir misiniz?
Solved! Go to Solution.
04-26-2017 08:09 AM - edited 04-26-2017 08:10 AM
Merhaba Serkan Bey,
Sorunuzu yanlış anlamadıysam problem bir state machine ve bir UI while döngüsü ile çözülebilir. Yani tek yapılan threadları 2 farklı döngüyle ayırmak olacaktır. Uğraşılıp tüm iş state machine içerisinde de yapılabilir ama en kolay ve hızlı yolu bu gibi.
Örnek olarak eklediğim koddan faydalanabilirsiniz.
04-26-2017 09:38 AM
Merhaba Tolgahan Bey,
Şuan LV13 kullanıyorum. Gönderdiğiniz örnek kodu LV15 te açma fırsatım olunca inceleyeceğim. Her bir saniyede data ölçüyorum. Yani real time bir sistem var. Bu sistem devam ederken çeşitli grafik ayarların dosyadan okuyorum. Bunu buton eventinde yaptığım için döngü zamanım bir saniyeden 3 saniyeye kadar çıkıyor. Data almada geçikme yaşanıyor. Bu işi yaparken UI lock durumda oluyor ve saniyede bir data alamadığım için data kaybı yaşanıyor. Ve ekranda istemediğim donma oluyor. State machine yapısını bozmadan grafik ayarlarını bir thread de okumak istiyorum. Böylece döngü zamanım hiçbir koşulda etkilenmesin. Bu işlem C# da user thread, labview de Consumer/Producer ile yapılabiliyor. Teşekkür ederim.
04-26-2017 09:44 AM
Merhaba Serkan Bey,
Örneği LV 13 versiyonuna çekip yükledim.
İnceleyebilirsiniz.
04-26-2017 12:50 PM
Tolgahan Bey,
Örnek için teşekkürler. Ancak bu örnek threadli bir yapı içermiyor diye düşünüyorum. Birbirinden bağımsız iki adet döngü. İşime yarayacağa benzemiyor açıkçası. Grafiğe data atıyorum. Aynı grafiğe renk,scala max min değeri gibi değerleri data alırken zaman kaybı olmadan atmak istiyorum. Paralel bir task işlemi yapabilecek birşeye ihtiyacım var.
04-27-2017 11:36 PM
Kodunu ekleyebilirsen eger belki yardimci olabilirim. Butona bastiginda yapmak istedigin islem her neyse bunu asynchronous vi call yaparak halledebilirsin. Call and Forget e gore ayarlarini yapip buton islemi icin yarattigin subvi i cagirabilir, eger islem sonrasi data yi da subvi dan aktarmak istiyorsan queue yada global variable kullanabilirsin.
10-09-2017 12:20 PM
Bahsettiğiniz methodu kullanarak çözdüm. Teşekkür ederim.