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