非同期デッドロックで立ち往生しており、それを修正するための正しい構文がわかりません。私はいくつかの異なる解決策を見てきましたが、何が問題を引き起こしているのかを完全に把握することはできません.
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()
タスクが完了するのを待つだけで、通常の操作に戻るという印象を受けました。これは正しくありませんか?