c# - 如何显示敬酒消息并延迟以下代码运行几秒钟?
问题描述
我想在 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 消息根本没有显示。
解决方案
如果您想延迟触发该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();
}
看下面的效果:
推荐阅读
- java - TableView 编辑方法返回错误的行
- python - 使用 OS 库时的空变量
- ios - URLSessionConfiguration 中的 TLSMinimumSupportedProtocol
- bing-maps - 如何检查 Bing 地图中的坐标是否存在街边(或街景)
- javascript - 尝试访问带有标题的网站
- python - Where does `conda` keep the installed packages on windows?
- azure-iot-edge - 最大模块数
- html - 向后/向前导航时浏览器滚动到上一个位置而不是锚点
- python - plt.yticks 未在图中显示
- javascript - 在异步函数 reactjs 之后从另一个 Component 调用方法