Xamarin Fortschritts-dialog nicht angezeigt, wie erwartet
Klicken Sie auf den Menüpunkt, ich brauche zu aktualisieren, mehrere EditText views. Code geht so. Während diesem Prozess, den ich zeigen wollte Fortschritts-dialog.
public override bool OnOptionsItemSelected(IMenuItem item)
{
switch (item.ItemId)
{
case Resource.Id.updateid:
var progressDialog = ProgressDialog.Show(this, "", "Updating...", true);
progressDialog.SetProgressStyle(ProgressDialogStyle.Spinner);
new Thread(new ThreadStart(delegate
{
RunOnUiThread(() =>
{
for (int i = 0; i < 100; i++)
{
eTxt[i].Text = slnArray[i].ToString();
}
progressDialog.Dismiss();
}
);
})).Start();
return true;
default:
return base.OnOptionsItemSelected(item);
}
}
Manchmal Fortschritts-dialog angezeigt wird und manchmal nicht. Meist erst mal erscheinen, und es ist nicht angezeigt, gefolgt von. Es hing bis zum zweiten mal.
Wenn überhaupt-dialog angezeigt wird, ist es nicht drehen und es sieht wie einige statische Bild.
Frage 1), Wie dieser dialog erscheint immer?
Frage 2) Wie kann ich diese Spinnerei?
HINWEIS: ich habe versucht, halten progressDialog.Schließen() innerhalb einer anderen RunOnUiThread() und außerhalb der Faden ebenfalls. Beide Möglichkeiten scheiterten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich vermute, dass Ihre
for (int i = 0; i < 100; i++)
Schleife geschieht so schnell, dass das UI ist nicht immer eine chance, um den Bildschirm zu aktualisieren. Versuchen Sie, inawait Task.Delay (50);
zu simulieren, mehr Arbeit geschieht in IhremThread
.Beispiel:
Hinweis:, es sei denn, etwas in Ihrer
Thread
ist eigentlich die Aktualisierung der Inhalte auf der Benutzeroberfläche können Sie entfernen Sie dieRunOnUiThread
delegieren, da es nicht benötigt wird.Und auch der dialog Kündigung ist nicht erforderlich, um eingewickelt werden, entweder als dialog-Activity/Fragment Entlassung für ungültig erklärt hat das UI und das OS aktualisiert wird, es auf das nächste Bild zeichnen: