繁体   English   中英

C# 控制台应用程序(在不同的项目中)调用 class 库中的异步方法挂起

[英]C# console app (in a different project) calling async method in class library hangs

我创建了一个对 MS Graph API 进行异步调用的 class 库。 它在同一个项目中的控制台应用程序中运行良好。 如果将控制台应用程序添加为解决方案中的新项目并调用异步方法,则对 Graph 的调用将挂起。 我认为这可能是一个僵局,但我无法修复它(也许我需要重新考虑架构......?)。 这是 dll (GraphMail) 中的(按比例缩小的)方法:

//graphClient is an already initiated GraphServiceClient
    public async Task<string> GetMail()
    {
        var messages = await graphClient.Users[user]
            .MailFolders[folder]                
            .Messages                
            .Request()
            .Filter(filter)
            .Select(u => new {
                u.Id,
                u.SentDateTime,
                u.From,
                u.ToRecipients,
                u.Subject,
                u.Body
            })
            .GetAsync();

    return "I'm back";
}

以及来自程序的调用(每条评论都是一次尝试):

        GraphMail grMail = new GraphMail();

        //var result = grMail().Result;
        //var result = bhMail.GetMail().GetAwaiter().GetResult();
        //var result = Task.Run(() => grMail()).Result;

谢谢你的时间。

您的示例似乎缺少等待结果的明显示例。

您的控制台应用程序应确保它使用异步任务主:

public static async Task Main(string[] args)
{
   GraphMail grMail = new GraphMail();

   var result = await grMail.GetMail();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM