У меня проблемы с работой моей функции ComputeListener, как и ожидалось.
Я хочу, чтобы StatusBlock.Text
немедленно обновлялся в пользовательском интерфейсе еще до того, как Compute () начинается, но яне могу заставить это работать.
Я знаю, что этот вопрос задавался в другом месте в StackOverflow, но ни одно из решений, которые я видел, не работало для меня.
Я имел дело с несколькими проблемами на протяженииКстати, но текущая проблема заключается в том, что никакие изменения не вносятся до тех пор, пока ComputeListener () полностью не завершит свое выполнение, и все остальные функции будут заблокированы до тех пор.
Я также хочу иметь возможность нажатькнопка закрытия, чтобы остановить приложение, если Compute () занимает слишком много времени, но это также не может произойти.
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public void ComputeListener(object sender, RoutedEventArgs args)
{
var t = Task.Run(() => Dispatcher.BeginInvoke(new Action(() => { StatusBlock.Text = "Status: Processing"; })));
t.Wait();
Task.Run(() => Dispatcher.BeginInvoke(new Action(() => { Compute(); })));
}
private void Compute()
{
//code here
}