【发布时间】:2016-08-02 19:11:41
【问题描述】:
我正在 Visual Studio Xamarin 中制作 Android 应用程序,在应用程序的登录屏幕中,当通过 Web 服务与数据库建立连接以验证密码时,我想显示一个 progressDialog,直到建立连接。
这是我在客户端的代码:
private string login()
{
string x = null;
var progress = ProgressDialog.Show(this, "waiting", "Loading");
progress.SetProgressStyle(ProgressDialogStyle.Spinner);
new Thread(new ThreadStart(delegate
{
RunOnUiThread(async () =>
{
x = await services.Verification("abc", "xyz");
progress.Dismiss();
});
})).Start();
return x;
}
在服务器端:
public string Verification(string userName, string password)
{
SqlConnection conn = new SqlConnection(@"");
conn.Open();
string query = "select category from ACCOUNTS where loginId = '" + userName + "' and pasword= '" + password + "'";
SqlCommand cmd = new SqlCommand(query);
cmd.Connection = conn;
string catagory = null;
SqlDataReader account = cmd.ExecuteReader();
if (account.HasRows)
{
if (account.Read())
{
catagory = account[0].ToString();
}
}
conn.Close();
return catagory;
}
这是x = await services.Verification("abc", "xyz"); 行的 login() 函数中的错误,它说:
'String' does not contain a definition for 'GetAwaiter' and no extension method 'GetAwaiter' accepting a first argument of type 'String' could be found (are you missing a using directive or an assembly reference?)
【问题讨论】:
-
正如错误试图告诉你的那样,你不能等待
string。您需要使用一些实际的异步 API。 -
像什么?我是新手.....请帮助!
-
and pasword= '" + password + "'"- 我只是……我只是……无语。出于对 Internet 的热爱,请在将其投入生产之前接受一些安全培训。 Tony Hunt 有一个 great video 可用。
标签: c# android xamarin visual-studio-2015 xamarin.android