Takže předpokládám, že ty "věci" NacitajDtb(), ZobrazObr() a CitajData() vám pouze spouštějí nějakou práci na pozadí (asynchronní operace nebo v backgroud treadu)? Dejte sem ukázku jak to tam máte. V takovém případě je správné řešení použití klíčových slov async a await, ukázka:
private async void button1_Click(object sender, RoutedEventArgs e)
{
var pb = (CircularProgressBar)this.FindName("PB7");
pb.Visibility = Visibility.Visible;
button1.IsEnabled = false; //Zablokování UI
try
{
await Task.WhenAll(
NacitajDtbAsync(),
ZobrazObrAsync(),
CitajDataAsync());
}
finally
{
pb.Visibility = Visibility.Hidden;
button1.IsEnabled = true; //Odblokování UI
}
}
private async Task NacitajDtbAsync()
{
//např:
//...
//var result = await query.ToListAsync();
//nebo
//await file.ReadAsync();
//nebo
//await Task.Run(() => DoCPUWork());
}
private void DoCPUWork() { /*...*/ }
|