我有调用服务器来更新数据库的功能,我等着它在返回结果之前完成:使用ProgressDialog与异步/等待,C#的Android
public async Task<int> CarryOutPreRegisterDevice(string emailAddress)
{
int intRet=-1;
Task<int> tski = PreRegisterDevice(emailAddress);
intRet = await tski;
return intRet;
}
我想怎么办显示进度对话框,同时发生这种情况。但是,只要将进程对话框中的await行打包,它就允许原始线程运行并在等待完成的任务完成之前返回intRet。
public async Task<int> CarryOutPreRegisterDevice(string emailAddress)
{
int intRet = -1;
Task<int> tski = PreRegisterDevice(emailAddress);
ProgressDialog progressDialog;
progressDialog = ProgressDialog.Show(AppGlobals.CurrentActivity, "", "Sending....", true);
progressDialog.SetProgressStyle(ProgressDialogStyle.Spinner);
new Thread(new ThreadStart(async delegate
{
intRet = await tski;
progressDialog.Dismiss();
})).Start();
return intRet;
}
有没有更好的方法来构造这个,以便在任务完成之前不会执行返回行。
谢谢。
为什么要创建一个新线程?这打破了任务的目的。显示进度对话框后,只需等待任务,这就是你需要做的... – Gusman