布尔任务后尝试启动对话框,应用程序卡住

时间:2018-09-18 10:35:00

标签: c# xamarin

当我在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();
}

当我按下开始按钮时,我的应用程序被卡住,无法让我做任何事情。 如果我将在按钮事件中使用任务,那么一切都会很好

1 个答案:

答案 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);
}