我创建了一个类库,用于异步调用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
复制相似问题