首页 > 解决方案 > 如何显示敬酒消息并延迟以下代码运行几秒钟?

问题描述

我想在 Xamarin.Android 中向用户显示一条 Toast 消息,但是在 toast 运行之前延迟大约 3 秒左右之后有以下代码。

我尝试使用不同的计时器类在设定的时间间隔后继续执行以下代码,延迟有效,但 toast 消息根本不显示。

// Main method
Toast.MakeText(this, "It is correct", ToastLength.Short).Show();

var t = new System.Timers.Timer(3000);
t.Elapsed += new ElapsedEventHandler(OnTimedEvent);
t.Enabled = true;

// event handler
private void OnTimedEvent(object sender, ElapsedEventArgs e)
    {
        // following code in this method
        SetLayout();
        t.Enabled = false;
        t.Dispose();
    }

我希望显示 toast 消息和 SetLayout 方法中的以下代码在大约 3 秒后运行,但现在 toast 消息根本没有显示。

标签: c#xamarin.android

解决方案


如果您想延迟触发该SetLayout方法3s,您可以尝试Task.Delay。这是我的代码首先显示敬酒然后显示警报:

private async void Btn_Click(object sender, EventArgs e)
{
    Toast.MakeText(this, "It is correct", ToastLength.Short).Show();

    await Task.Delay(3000);

    Android.Support.V7.App.AlertDialog.Builder builder = new Android.Support.V7.App.AlertDialog.Builder(this);
    builder.SetPositiveButton("OK", delegate
    {
    });
    Android.Support.V7.App.AlertDialog alertDialog = builder.Create();
    alertDialog.SetTitle("Alert");
    alertDialog.SetMessage("messages");            
    alertDialog.Show();
}

看下面的效果:

在此处输入图像描述


推荐阅读