如何在Xamarin等待后台任务



我正试图用Xamarin的文件选择器从设备中获取一个文件,并对该文件进行一些处理。但是,由于我要做的操作很重,文件选择器会冻结并等待任务完成。所以,我无法通知用户该任务,它只是冻结了。简单地说,我试图在后台运行这个操作,比如:

  1. 选择文件
  2. 等待文件选取器屏幕关闭
  3. 通知用户该任务
  4. 对文件执行操作。我试着用"等待"来实现这一点,但没有成功

Edit:我正在尝试在后台执行操作,而不会导致UI冻结。

这是我的代码

foreach (var file in pickResult)
{
await Task.Run(async () =>
{
MainThread.BeginInvokeOnMainThread(() =>
{
doSomethingWith(file.FullPath);
}
);
});
}

如果你能分享你实现这一目标的想法,我将非常高兴。

试试这样的

var tasks = new List<Task>();
foreach (var file in pickResult)
{
tasks.Add(Task.Run(()=>doSomethingWith(file.FullPath)));
}
await Task.WhenAll(tasks);
//all done, you can update UI to indicate this.

在这里,我们为每个文件启动任务,然后在for循环之后,我们异步等待所有任务完成。然后我们可以更新UI或其他东西。

最新更新