【发布时间】:2017-05-04 15:25:45
【问题描述】:
我有一个调用服务器来更新数据库的函数,我在返回结果之前等待它完成:
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;
}
有没有更好的方法来构造它,以便在任务完成之前不会执行返回行。
谢谢。
【问题讨论】:
-
为什么要创建一个新线程?这违背了任务的目的。在显示进度对话框后等待任务,这就是您需要做的一切......
标签: c# android asynchronous progressdialog