我被困在異步死鎖,我找不出正確的語法來解決它。我看過幾種不同的解決方案,但似乎無法弄清楚是什麼導致了這個問題。異步等待處理程序死鎖
我使用Parse作爲後端,並嘗試使用處理程序寫入表。我的處理程序看起來像:
public class VisitorSignupHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//Get the user's name and email address
var UserFullName = context.Request.QueryString["name"].UrlDecode();
var UserEmailAddress = context.Request.QueryString["email"].UrlDecode();
//Save the user's information
var TaskToken = UserSignup.SaveUserSignup(UserFullName, UserEmailAddress);
TaskToken.Wait();
....
}
public bool IsReusable { get { return false; } }
}
然後,它呼喚我的中間層:
public static class UserSignup
{
public static async Task SaveUserSignup(string fullName, string emailAddress)
{
//Initialize the Parse client with the Application ID and the Windows key
ParseClient.Initialize(AppID, Key);
//Create the object
var UserObject = new ParseObject("UserSignup")
{
{"UserFullName", fullName},
{"UserEmailAddress", emailAddress}
};
//Commit the object
await UserObject.SaveAsync();
}
}
儘管這似乎是陷入在Wait()
。我的印象是,Wait()
只是等待任務完成,然後返回到正常操作。這是不正確的?
謝謝!我在發佈之前先閱讀您的博客,但無法完全弄清楚語法。這很好。欣賞它。 –
不客氣!附:給[TAP文檔](http://msdn.microsoft.com/en-us/library/hh873175.aspx)一個很好的閱讀;這裏有一些'async'約定,特別是將'SaveUserSignup'重命名爲'SaveUserSignupAsync'。 –