如何在Xamarian iOS应用程序中单击按钮后X秒触发事件?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Xamarian iOS应用程序中单击按钮后X秒触发事件?相关的知识,希望对你有一定的参考价值。
我正在自学C#,作为其中的一部分,我正在尝试开发一个ios倒计时器应用程序,即在点击计时器启动按钮X秒后播放.wav声音文件,因为计时器值已从X变为0 。
为了做到这一点,我尝试使用System.Timers命名空间,但一直无法弄清楚如何编程上述倒数计时器。下面是我不完整的代码(代码显然不符合上述功能,但可能是完成该功能的完整代码的一部分):
partial void UIButton1416_TouchUpInside(UIButton sender)
{
url = NSUrl.FromFilename("Sounds/bell.wav");
bell = new SystemSound(url);
int RoundedTimerValue = Convert.ToInt32(Math.Round(TimerSlider.Value, 0));
System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 60000;
timer.Enabled = true;
}
有没有人知道如何创建所描述的倒数计时器/在点击按钮后X秒触发事件?
答案
示例代码。
Timer timer = new Timer();
timer.Interval = 60000;
timer.Elapsed += new ElapsedEventHandler((x,y) => {
//Do whatever you want
timer.Stop();
});
将以下代码放在Button Click Handler中,并使计时器变量全局化。
timer.Start();
或者您可以将所有内容保留在Button的单击处理程序中,这不是什么大问题。
说明:计时器类有一个名为Elapsed的事件,当计时器的Interval中指定的毫秒数结束时,将调用该事件。与线
timer.Elapsed += new ElapsedEventHandler((x,y) => {...
我们正在分配定时器启动时要调用的Delegate(虚函数)。因此,大括号{}内的任何代码都将在每个Timer.Interval毫秒内调用。我们当时停止计时器,因为我们不希望它继续运行并产生很多事件。
更新2:
通常,EventHandler是使用定义的
return_type functionName(object sender, EventArgs e);
但由于委托是虚拟的,参数也是如此。 x对应于发送者,y对应于e。
该事件处理程序代码也可以写成如下
void someFunction(object sender, ElapsedEventArgs e)
{
timer.Stop();
}
然后,
timer.Elapsed += new ElapsedEventHandler(someFunction);
至于'=>,您可以阅读有关Lambda Expressions Here的内容
以上是关于如何在Xamarian iOS应用程序中单击按钮后X秒触发事件?的主要内容,如果未能解决你的问题,请参考以下文章