RestSharp-如何返回热门任务?

时间:2018-11-07 13:23:25

标签: c# async-await restsharp

我有一个WinForms应用程序,在该应用程序中我有一个存储库类Collections,该类使用RestSharp调用宁静的服务。存储库代码与此类似...

public Task<IRestResponse<List<CollectionDto>>> GetCollectionsPagedAsync()
{
    var client = RestClientFactory.Create();
    var request = new RestRequest("api/collections");

    // Parameters omitted for brevity

    return client.ExecuteTaskAsync<List<CollectionDto>>(request);
}

认为会发生的事情是,这将启动服务操作并立即返回任务。然后,当服务操作正在运行时,前端将可以自由执行其他操作。完成这些操作后,它将await完成任务。因此前端将类似于...

var repository = new CollectionRepository();
var getCollectionsTask = repository.GetCollectionsPagedAsync();

// Do other initialization work here

// If the collections task hasn't completed, wait it out...    
var collectionList = await getCollectionsTask;

我在服务操作中设置了一个断点并测试了此代码。对ExecuteTaskAsync的调用不会导致命中断点。只有当我执行await时,操作才真正开始运行。

我对使用C#异步还很陌生,但是RestSharp似乎给了我一个“冷任务”。我自己无法在任务上调用Start,或者得到“可能未在诺言式任务上调用开始”。根据{{​​3}} SO线程...

  

您收到该错误消息,因为Task类已经启动了   任务,然后再交给你。

所以我很困惑。没有断点命中(和其他测试)表明我的任务很冷,错误消息表明我的任务很热。那么,以异步方式使用静态服务的正确方法是什么?

0 个答案:

没有答案