如何在Xamarian iOS应用程序中单击按钮后X秒触发事件?

时间:2017-12-29 15:49:16

标签: c# ios xamarin timer

我正在教自己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秒触发事件?

1 个答案:

答案 0 :(得分:1)

示例代码。

  timer.Start();

将以下代码放入按钮单击处理程序中,并将计时器变量设为全局。

timer.Elapsed += new ElapsedEventHandler((x,y) => {...

或者您可以将所有内容保留在Button的点击处理程序中,这不是什么大问题。

<强>说明: timer类有一个名为Elapsed的事件,当计时器Interval中指定的毫秒数结束时调用该事件。与行

return_type functionName(object sender, EventArgs e);

我们正在分配一个在定时器启动时调用的Delegate(虚函数)。因此,大括号{} 中的任何代码都将在每个 Timer.Interval 毫秒内调用。我们当时停止计时器,因为我们不希望它继续运行并产生很多事件。

更新2:

通常,使用

定义EventHandlers
void someFunction(object sender, ElapsedEventArgs e)
{
   timer.Stop();
}

但由于委托是虚拟的,参数也是如此。 x对应发件人,y对应e

该事件处理程序代码也可以写成如下

timer.Elapsed += new ElapsedEventHandler(someFunction);

然后,

let results1 = (query1) // ["1","2"]
let results2 = (query2) // ["3","4"]

for r in MERGE_RESULTS(results1,results2) return r // ["1","2","3","4"]

至于'=&gt;'你可以阅读Lambda表达式Here