Zdravím,
snažím sa urobiť WPF aplikáciu, kde by sa výpočet (nie je to výpočet v pravom slova zmysle, ale pre zjednodušenie...) vykonával v druhom vlákne, nie v UI. Na GUI vypisujem aktuálnu hodnotu výpočtu po nejakom kroku (TextBox je nabindovaný na property do ktorej sa ukladá aktuálna hodnota). Ak je ten krok malý, tak mi to vypíše až konečnú hodnotu a počas výpočtu sa aplikácia javí ako zamrznutá. Neviete poradiť ako zosynchronizovať hlavné vlákno UI a vlákno kde je výpočet, aby sa hodnota aktualizovala po takom čase, aby to stihlo zobrazovať? Jedno riešenie by bolo cez Thread.Sleep(), ale ak by sa nastavil dosť veľký krok, tak Thread.Sleep() by už nebol potrebný a naopak by to spomaľoval.
Dalo by sa to nasimulovať nejako takto:
Kód:
Thread calcthread = new Thread(work.CalculateValue);
calcthread.Start();
A v triede Work metóda CalculateValue:
Kód:
for (int i = 0; i < count; i++)
{
if(i%step == 0)
X = i;
}
//property
public int X
{
get { return _x; }
set {
_x = value;
OnPropertyChanged("X");
}
}