c# - 我怎样才能把异步任务> 进入 BindableCollection<>
问题描述
我如何等待Task并返回其结果并将Task的结果放入BindableCollection。(return await Task.Run()) 的语法有问题,并将其放入 BindableCollection。基本上,我正在尝试做的是等待方法的结果,将其返回并将其放入 ViewModel 中的 BindableCollection 并绑定到 ItemsControl。我在多个线程中查找了一些示例,不幸的是,没有一个线程包含有关 BindableCollection 的任何内容。我只能猜测我必须以某种方式将通用列表转换为 IEnumerable,尽管我不知道如何。
public class DataAccess : Conductor<object>
{
public async Task<List<DataModel>> Starter(IProgress<ProgressReportModel> progress, CancellationToken cancellationToken)
{
List<DataModel> output = new List<DataModel>();
//What i tried so far
return await ScannerAsync(progress, cancellationToken);
List<GameDataModel>> output = await ScannerAsync(progress, cancellationToken);
}
private static async Task<List<DataModel>> ScannerAsync(IProgress<ProgressReportModel> progress, CancellationToken cs)
{
await Task.Run(() =>
{
Do Stuff
}).ConfigureAwait(true);
await Task.Run(() =>
{
Do Stuff and return output.
}).ConfigureAwait(true);
}
}
public class ViewModel : Conductor<object>
{
private BindableCollection<DataModel> Data { get; set; }
private CancellationTokenSource cts = new CancellationTokenSource();
private Progress<ProgressReportModel> progress = new Progress<ProgressReportModel>();
public void StartScan()
{
DataAccess da = new DataAccess();
Data = new BindableCollection<DataModel>(da.Starter(progress, cts.Token));
// ERROR: Cannot Convert from Tasks.Task to Generic.IEnumerable
}
}
解决方案
您的代码尝试将 Task 转换为 BindableCollection,您希望转换任务的 RESULT,为此您需要等待 da.Start 调用:
Data = new BindableCollection<DataModel>(await da.Starter(progress, cts.Token));
您可能需要调整 StartScan 方法的签名以
public async Task StartScan()
推荐阅读
- java - 为什么 String#hashCode 使用本地中间变量来存储 hashCode 结果?
- sql-server - Swift 只打印我的 sql server 查询结果的第一个字符
- date - Yesterday date using VBS code and batch file (format : YYYY_MM_DD)
- javascript - Canvas 使用方法创建 javascript 对象
- react-router - 将 material-ui 主题与 react-router 一起使用
- css - 如何让文本在 Outlook 2016 中闪烁?
- c# - 绑定项目重置时,Core.NET 选择列表不会在回发时重置
- aws-lambda - Zappa 异步任务导致 Amazon Cloudfront 生成 403 Bad Request
- python - 为什么有时可以在 Python 中将列表转换为集合,但有时却不能?
- git - Git see other file permssion than my filesystem