我创建了一个类库,用于异步调用MS Graph。它在一个生活在同一个项目中的控制台应用程序中运行得很好。如果将控制台应用程序添加为解决方案中的新项目并调用异步方法,则对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;耽误您时间,实在对不起。
发布于 2021-12-16 14:34:32
你的例子似乎忽略了你等待结果的显而易见的例子。
您的控制台应用程序应该确保它使用的是异步任务主体:
public static async Task Main(string[] args)
{
   GraphMail grMail = new GraphMail();
   var result = await grMail.GetMail();
}https://stackoverflow.com/questions/70380525
复制相似问题