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

问题描述 投票:0回答:1

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

c# ios xamarin timer
1个回答
1
投票

示例代码。

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的内容

© www.soinside.com 2019 - 2024. All rights reserved.