我有一个带有TextBlock和Button控件的 MainWindow,通过单击调用RunAsync(int)方法。它正在做一些计算,所以这个过程花费了相当长的时间并且阻塞了 UI。我能够将其移至异步线程,但我完全陷入了如何最好地在 For 的每次迭代中实现从此方法更新接口的问题的每次迭代中实现从此方法更新接口的问题。例如,使用进度条。
目前我有以下代码:
public partial class MainWindow : Window
{
public MainWindow() => InitializeComponent();
private async Task<List<int>> RunAsync(int par)
{
return await Task.Run(() =>
{
List<int> list = new List<int>();
for (int i = 0; i < par; i++)
{
// some code, that takes quite a long time
Thread.Sleep(500);
list.Add(i);
}
return list;
});
}
private async void StartBtn_Click(object sender, RoutedEventArgs e)
{
int count = (await RunAsync(5)).Count; …Run Code Online (Sandbox Code Playgroud)