当我在bool按钮应用程序中使用异步任务结果时被卡住
async Task<bool> task1()
{
await Task.Run(() =>
{
for (int a = 0; a <= 1000000000; a++)
{
}
});
return true;
}
private void Start_Click(object sender, EventArgs e)
{
setDialog(true);
if (task1().Result==true)
setDialog(false);
}
private void setDialog(bool show)
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.SetView(Resource.Layout.layout1);
Dialog dialog = builder.Create();
dialog.SetCancelable(false);
if (show) dialog.Show();
else dialog.Dismiss();
}
当我按下开始按钮时,我的应用程序被卡住,无法让我做任何事情。 如果我将在按钮事件中使用任务,那么一切都会很好
答案 0 :(得分:0)
您陷入僵局。这:task1().Result
同步等待,从而使任务的目的无效。像这样使用async / await:
private async void Start_Click(object sender, EventArgs e)
{
setDialog(true);
var result = await task1();
if (result)
setDialog(false);
}