Xamarin ProgressDialog

时间:2018-04-22 14:09:01

标签: android xamarin progressdialog

我正在构建Xamarin Android应用程序,我有一个需要一些时间的功能。 现在,我正在尝试显示ProgressDialog并执行该功能。 下面的代码没有显示ProgressDialog,我什么也看不见。你能帮我吗?

private void BtButton_Click(object sender, System.EventArgs e)
{

    ProgressDialog mDialog = new ProgressDialog(this);
    mDialog.SetMessage("Loading data...");
    mDialog.SetCancelable(false);
    mDialog.Show();

    Task t = Task.Run(() => { Foo(); });
    t.Wait();
    mDialog.Dismiss();
}

private void Foo()
{
    for (int i = 0; i < 10; i++)
    {
        Thread.Sleep(1000);
    }
}

1 个答案:

答案 0 :(得分:0)

您通过调用t.Wait()来阻止主线程,可以找到更多信息here

相反,你可以这样做:

async void BtButton_Click(object sender, System.EventArgs e)
{
    var mDialog = new ProgressDialog(this);
    mDialog.SetMessage("Loading data...");
    mDialog.SetCancelable(false);
    mDialog.Show();

    await Task.Run((() => Foo()));
    // Alternatively
    // await Task.Delay(10000);

    mDialog.Dismiss();
}

void Foo()
{
    for (int i = 0; i < 10; i++)
    {
        Thread.Sleep(1000);
    }
}

P.S。:ProgressDialog在API级别26使用替代品中已被弃用。