C#从异步函数返回值

时间:2017-01-24 15:40:53

标签: c#

我试图编写一个可以返回值的C#异步函数。

当前功能代码:

public async void getTwitterFollowerCount()
{
    var twitterCtx = new TwitterContext(SharedState.Authorizer);

    var followers = await (from follower in twitterCtx.Friendship where follower.Type == FriendshipType.FollowerIDs && follower.UserID == "15411837" select follower).SingleOrDefaultAsync();

    if (followers != null && followers.IDInfo != null && followers.IDInfo.IDs != null)
    {
        followers.IDInfo.IDs.Count();
    }
}

我一直在尝试类似的东西:

public async int getTwitterFollowerCount()
{
    var twitterCtx = new TwitterContext(SharedState.Authorizer);

    var followers = await (from follower in twitterCtx.Friendship where follower.Type == FriendshipType.FollowerIDs && follower.UserID == "15411837" select follower).SingleOrDefaultAsync();

    if (followers != null && followers.IDInfo != null && followers.IDInfo.IDs != null)
    {
        return followers.IDInfo.IDs.Count();
    }
}

但从来没有让它发挥作用。有人有想法,我怎么能从这个异步函数返回一个值?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

getTwitterFollowerCount的返回类型更改为Task<int>。在MSDN https://msdn.microsoft.com/en-us/library/mt674882.aspx了解更多信息。

答案 1 :(得分:0)

正如其他人所说,

Task<int>

是正确的返回类型。

此外,永远不要有“异步空白”。方法,如果你可以避免它,因为它不可能等待返回void的方法。应该执行此操作的唯一情况是使用事件处理程序。否则,请务必返回&#39;任务&#39;