在while循环期间不显示警报对话框

时间:2018-03-08 13:24:28

标签: c# loops xamarin.android alertdialog show

我在while循环中设置了断点, Show()部分执行但屏幕上没有显示实际的对话框。应用程序在循环时冻结,最终发生异常。有任何想法吗?也许我应该把它作为异步电话但是怎么做?

while (string.IsNullOrEmpty(tu.TargetBin))
{
    RunOnUiThread(() =>
    {
        new AlertDialog.Builder(this).SetTitle(_warning)
            .SetMessage(
                "Es gibt keine leeren Kanäle! Warten Sie bis ein Kanal leer ist und tippen Sie 'OK'.")
            .SetPositiveButton(_ok,
                delegate
                {
                    tu.TargetBin = Utility.WsHueckmann.GetPackBin(order.DocNo,
                        _orders.First().PackingPlace);
                })
            .Create()
            .Show();
    });
}

1 个答案:

答案 0 :(得分:0)

是的,你肯定应该让它异步。 现在你只需要在循环中创建大量的alertdialogs,在用户看到第一个之前,你就会遇到异常(可能是内存不足)。 而不是你可能需要这样的东西:

    var ok_pressed = await App.Current.MainPage.DisplayAlert(_warning, 
     "Es gibt keine leeren Kanäle! Warten Sie bis ein Kanal leer ist und tippen Sie 'OK'.", _ok, _cancel);
    if(ok_pressed) {
           tu.TargetBin = Utility.WsHueckmann.GetPackBin(order.DocNo,
                        _orders.First().PackingPlace);
    }