我试图在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上找到解决此问题的方法。
如何使这种同步。
答案 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(书中)或在线教程。