我有一个IMyService接口,它有这个方法:
public Task<IList<int>> GetNumbers();
我有一个IMyService
的实现,它从Server获取数字列表。因此它是一种异步方法。
我的问题是我需要为DesignTimeService做同样的事情。所以我做了:
public Task<IList<int>> GetNumbers()
{
var lists = new ObservableCollection<int>();
System.Threading.Thread.Sleep(2000);
for (int i = 0; i < 5; i++)
lists.Add(i);
return lists;
}
但它不会编译。如何退回Task<IList<int>>
?如果我正在模拟我在本地生成的数字列表?
谢谢。
答案 0 :(得分:1)
如果您愿意,可以返回Task.FromResult(lists)
我个人试图通过async
途径
答案 1 :(得分:0)
您可以在任务中包含所需的逻辑并返回
public Task<IList<int>> GetNumbers()
{
return Task.Factory.StartNew<IList<int>>(() =>
{
var lists = new ObservableCollection<int>();
System.Threading.Thread.Sleep(2000);
for (int i = 0; i < 5; i++)
lists.Add(i);
return lists;
});
}
或使用async / await
public async Task<IList<int>> GetNumbers()
{
var lists = new ObservableCollection<int>();
await Task.Delay(2000);
for (int i = 0; i < 5; i++)
lists.Add(i);
return lists;
}