Azure DocumentDB异步请求问题

时间:2016-09-09 04:28:48

标签: c# azure async-await azure-cosmosdb

我试图在c#中执行azure documentdb存储过程。

    static string EndpointUri = "https://asdf.documents.azure.com:443/";
    static string PrimaryKey = "X";
    static DocumentClient client = new DocumentClient(new Uri(EndpointUri), PrimaryKey);

    static void Main(string[] args)
    {
        var x = doit();
        Read();
    }
    public static async Task<string> doit()
    {

        StoredProcedureResponse<string> sprocResponse = await client.ExecuteStoredProcedureAsync<string>("/dbs/eew/colls/fff/sprocs/ggg/", "kamal@enadoc.com");
        return "";
    }

我希望方法调用ExecuteStoredProcedureAsync能够执行同步调用。我就是这样做的。

根据我的理解,这应该作为同步方法调用工作,因为我添加了等待请求。但它不会那样工作。

我确定这种情况正在发生,因为我对异步等待c#的使用缺乏了解。

我无法在google上找到解决此问题的方法。

如何使这种同步。

1 个答案:

答案 0 :(得分:0)

更改

var x = doit();

 var x = doit().Result;

请注意;这将在这个简单的控制台应用程序中正常工作,但可能会导致实际应用程序死锁。如果你必须在真实的​​应用程序中同步它,你应该做这样的事情;

var x = Task.Run(() => doit()).Result;

解释这个问题超出了我能够轻松提出的答案,抱歉。如果你有权访问Pluralsight,这是Jon Skeet的一个很好的解释:https://www.pluralsight.com/courses/skeet-async。 否则,C#in A Nutshell(书中)或在线教程。