簡體   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