我正在构建一个应用程序,该应用程序将具有注册选项,并且我已经创建了一个方法来检查用户名是否可用,即异步。方法通过WebRequest连接到我的PHP/MySQL API并检索用户名是否被占用。Async WebRequest冻结应用程序
但是每当我试图在网上
var response = await webRequest.GetResponseAsync();
和整个应用程序运行该代码块只是冻结。尽管这样做同样的方法同步工作正常。
整体方法:
async public Task<UsernameAvailable> usernameAvailable()
{
try
{
token = "token=single";
function = "&function=checkUser";
string param = "¶m=" + User.username;
string result = "";
var webRequest = WebRequest.Create(@"http://" + APIURL + token + function + param);
var response = await webRequest.GetResponseAsync(); //troubled line
var content = response.GetResponseStream();
StreamReader reader = new StreamReader(content);
result = reader.ReadLine();
if (result == "0")
{
state = "Username is available.";
return UsernameAvailable.Available;
}
else
{
state = "Username is not available.";
return UsernameAvailable.NotAvailable;
}
}
catch
{
state = "Error checking for username.";
return UsernameAvailable.Error;
}
}
* Synced *与*同步不同* –
@MatíasFidemraizer它在上下文中。我已经更新了这个问题。 – DethoRhyne
你是怎么调用'usernameAvailable'的? –