【发布时间】:2020-10-01 09:00:02
【问题描述】:
我遇到了在单独的 UI 线程中实现 ProgressBar 的问题...
我的程序中有很多方法,我想在其中启动和停止进度条。
因此,我在我的 UI 中放置了一个 UI 组件 ProgressBar 并为它制作了一个模型,当在我的模型类中单独调用/使用时(我没有在后面的代码中工作),它(绑定后)可以正常工作。
当我将我的 Progress 模型属性设置为不确定然后调用其他一些方法时,就会出现问题:整个过程同步工作,并且进度条仅在退出主方法时才移动。
这是我想要实现的示例:
public void MyMethod1()
{
StartProgress();
NormalSubMethod1();
NormalSubMethod2();
(...)
EndProgress();
}
public void MyMethod2()
{
StartProgress();
NormalSubMethod5();
(...)
EndProgress();
}
这是我的StartProgress() 的样子,我尝试过但没有成功:
public async void StartProgress()
{
//Task.Run(() => { Progress.IsIndeterminate = true; });
//await Task.Run(() => Progress.IsIndeterminate = true); // starts moving
}
public async void StopProgress()
{
Progress.IsIndeterminate = false; // stops moving
}
我知道这一定是没有正确使用async、await 和Task 的问题,但我还不能让它工作。任何人都可以帮助我提供有关如何完成此操作的提示吗?
【问题讨论】:
-
@dymanoid 在我看来不是...看来我只能在后面的代码中使用 Dispatcher,而且我明确没有在那里工作,但在模型中...我可能需要使用 @ 987654330@、
await和async -
Avoid async void。它仅适用于异步事件处理程序,您的方法
StartProgress和StopProgress不是事件处理程序。
标签: c# wpf asynchronous task progress-bar