| | |
| Stránka: 1 z 1
| [ Príspevkov: 4 ] | |
Autor | Správa |
---|
Registrovaný: 13.10.09 Prihlásený: 06.02.14 Príspevky: 27 Témy: 3 | Napísal Drake: 15.03.2013 19:51 | |
|
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"); } }
|
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 Bydlisko: Žilina |
Tu by som použil triedu BackgroundWorker a potom jeho metódu ReportProgress... Je to podľa mňa pre takéto spätné reportovanie volajúcemu threadu najjednoduchšie. http://msdn.microsoft.com/en-us/library ... orker.aspxAk to chceš urobiť po svojom, tak sa obávam, že by si musel dať viac kódu. Z tohto čo si dal ťažko povedať, kde je problém.
_________________ C#, PHP, ... |
|
Registrovaný: 13.10.09 Prihlásený: 06.02.14 Príspevky: 27 Témy: 3 | Napísal autor témy Drake: 16.03.2013 11:58 | |
|
Ďakujem za tip. Vyskúšal som to a je to o niečo jednoduchšie a mám nad tým väčšiu kontrolu.
BTW, dá sa nejako pozastaviť? Že by som mohol mať Start/Pause/Continue?
|
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 Bydlisko: Žilina |
_________________ C#, PHP, ... |
|
| Stránka: 1 z 1
| [ Príspevkov: 4 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|