gpt4 book ai didi

c# - MVVM 调度程序 UI 无响应

转载 作者:行者123 更新时间:2023-12-03 10:35:46 25 4
gpt4 key购买 nike

我遇到了一个可能很简单的问题:

我用 MVVM 灯构建了一个 MVVM 应用程序。

当我进行大量计算时,我的 UI 没有响应。
我需要一个调度程序,因为我想访问一些依赖对象。

我尝试使用该代码:(可能无法正常工作,因为我使用的是应用程序线程?!)

Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
{
//LongTimeStuff
}));

我也试过:
        DispatcherHelper.Initialize();
DispatcherHelper.CheckBeginInvokeOnUI(() =>
{
//LongTimeStuff
});

但是在这里我遇到了问题,我的依赖对象在另一个线程中。

我在一个新线程的函数中所做的所有这些事情:
   Thread CalculationThread = new Thread(this.Calculate);

谢谢!

最佳答案

Dispatcher BeginInvoke 或 InvokeAsync 不运行任何单独的线程。它仅将任务添加到任务的调度程序队列。但是调度程序队列总是在 UI 线程上处理。

这是你应该做的:

void CommandExecuted()
{
Task.Run(() =>
{
//long running stuff

Dispatcher.BeginInvoke(new Action(() =>
{
//access ui here
}));
}

或使用异步模式:
    async void CommandExecuted()
{
await Task.Run(() =>
{
//long running stuff
});
//access ui here
}

关于c# - MVVM 调度程序 UI 无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30102671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com