gpt4 book ai didi

c# - Xamarin.iOS 中的 NSTimer 与 Timer - 何时使用什么?

转载 作者:可可西里 更新时间:2023-11-01 08:14:58 27 4
gpt4 key购买 nike

在使用原生 NSTimer 还是使用 .NET 替代品时是否有规则?

  • System.Windows.Forms.Timer
  • System.Timers.Timer
  • System.Threading.Timer

最佳答案

如果您的目标是可移植性,我会使用 .NET 计时器(见下文),除非您别无选择(例如方法的 NSTimer 参数)调用)。

很遗憾,您的问题中没有列出我一直以来最喜欢的计时器,它是由 Task 类提供的:

await Task.Delay (20);
//do something after the delay

使用非常简单。因此,代替此 Timer 代码:

void f() {
var timer = new Timer(2000);
timer.Elapsed += OnTimerElapsed;
timer.Start ();
Console.WriteLine ("Timer started, control is back here");
}

void OnTimerElasped (object o, EventArgs e)
{
Console.WriteLine ("tick");
}

你可以使用这个:

void f() {
StartTimer ();
Console.WriteLine ("Timer started, control is back here");
}

async void StartTimer ()
{
while (true) {
await Task.Delay (2000);
Console.WriteLine ("tick");
}
}

或者如果您想要单次执行:

async void StartTimer ()
{
await Task.Delay (2000);
Console.WriteLine ("tick");
}

这是一个真正的好处,因为您不需要将计时器作为实例变量来保持 .Stop() 它。

我发现此表单更加精简。就像我们多年前驳回了 goto 声明一样(GOTO 并没有死。它与 Elvis 和 Joe Dassin 在岛上),是时候考虑我们的回调过度使用了。

关于c# - Xamarin.iOS 中的 NSTimer 与 Timer - 何时使用什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19244607/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com