如何为设计时服务实现异步方法
本文关键字:服务 实现 异步方法 | 更新日期: 2023-09-27 18:26:50
我有一个IMyService接口,它有这样的方法:
public Task<IList<int>> GetNumbers();
我有一个IMyService
的实现,它从服务器获取号码列表。因此,它是一种异步方法。
我的问题是,我需要为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>>
?如果我正在模拟获取我在本地生成的数字列表?
谢谢。
如果您想要,您可以直接返回Task.FromResult(lists)
就我个人而言,我会尝试通过走async
路线
您可以将所需的逻辑封装在任务中,然后返回
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;
});
}
或者使用异步/等待
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;
}