NI Ürünleri İle İlgili Tartışmalar

cancel
Showing results for 
Search instead for 
Did you mean: 

UI Thread den bağımsız bir Thread açmak

Solved!
Go to solution

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?

0 Kudos
Message 1 of 7
(8,194 Views)

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.

Tolgahan ŞUSUR
Applications Engineer
NI Arabia Branch
Turkey
Download All
0 Kudos
Message 2 of 7
(8,181 Views)

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.   

0 Kudos
Message 3 of 7
(8,169 Views)

Merhaba Serkan Bey,

Örneği LV 13 versiyonuna çekip yükledim.

İnceleyebilirsiniz.

Tolgahan ŞUSUR
Applications Engineer
NI Arabia Branch
Turkey
0 Kudos
Message 4 of 7
(8,165 Views)

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. 

0 Kudos
Message 5 of 7
(8,158 Views)
Solution
Accepted by srkanylmaz

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.    

Senior Software Developer
Message 6 of 7
(8,144 Views)

Bahsettiğiniz methodu kullanarak çözdüm. Teşekkür ederim.

0 Kudos
Message 7 of 7
(6,781 Views)