C# Xamarin中如何实现按钮延迟5秒显示后永久不消失
问题根源
Device.StartTimer 回调函数的布尔返回值用于控制定时器是否重复执行:
- 返回
true:定时器会按照设定的间隔循环触发回调 - 返回
false:定时器执行1次后自动销毁,不再触发
你当前代码返回 true 导致定时器永久循环,如果你初始是隐藏按钮,第一次回调设置为可见、第二次回调又设置为隐藏,就会出现反复切换的问题。
修复代码
把回调返回值改为 false 即可,定时器只会执行一次,按钮设置为可见后不会再触发后续逻辑:
Device.StartTimer(TimeSpan.FromSeconds(5), () => { // 将目标按钮设置为可见 TargetButton.IsVisible = true; // 返回false终止定时器 return false; });
可选替代方案
如果你的逻辑可以写在异步方法中,用Task.Delay实现逻辑更直观,不需要处理定时器的生命周期:
// 仅需在异步上下文中执行以下代码 await Task.Delay(5000); TargetButton.IsVisible = true;
注意:如果涉及UI控件属性修改,上述两种写法默认均在Xamarin UI线程执行,常规场景不需要额外做线程调度。
内容的提问来源于stack exchange,提问作者Stavrogin
相关产品推荐
相关产品推荐

