C#, miért történik meg egyre ritkábban az értékadás?
private void BtnUnlock(object sender, RoutedEventArgs e)
{
//...
Process();
}
private void Process()
{
DataContext = this;
_bgWorker.DoWork += (s, f) =>
{
for (int i = 0; i <= 5; i++)
{
Thread.Sleep(1000);
WorkerState = i;
Application.Current.Dispatcher.Invoke(() =>
{
ProgressReverse.Content = 5 - WorkerState;
});
}
};
_bgWorker.RunWorkerAsync();
}
private void _bgWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Money += bonus;
Process();
}
Ez egy végtelen ciklus, de sajnos a Money += bonus csak az első, majd a 3., majd még egyre ritkábban történik meg, miért?
Akkor nézz utána, mert nagyon hasznos... bár a te esetedben szeintem nem igazán idevaló, csak úgy benyögte a válaszoló anélkül hogy megnézte volna mit is csinálsz.
Szerintem nem lenne szép gomb eseménykezelőjének végtelen ciklusban async kódot futtatni.
Egyébként pedig a bgWorker helyett inkább DispatcherTimer lenne a jobb megoldás.
Ugynaúgy létrehozod mint a bgworkert, megadot, hogy milyen gyakran hívodjon meg, majd az eseménykezelőben beállítoda progrest, illetve növeled a Money-t, ha végig ért...
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!