如何为设计时服务实现异步方法

本文关键字:服务 实现 异步方法 | 更新日期: 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;
}