vla*_*259 5 c# iphone timer nstimer xamarin.ios
我在MonoTouch中使用NSTimer时遇到问题.首先,我在我的主线程中运行了一个NSTimer,它起作用了.但是,我已经将计时器移动到一个单独的线程,我从来没有得到回调.我猜这是因为我的.NET风格线程不是一个运行循环 - 但我对MonoTouch/iOS很新,所以不确定.
我已将代码提取到测试项目并遇到了同样的问题.这是失败的代码:
var thread=new Thread(StartTimer as ThreadStart);
thread.Start();
[Export("StartTimer")]
void StartTimer()
{
using(var pool = new NSAutoreleasePool())
{
timer=NSTimer.CreateRepeatingScheduledTimer(2,delegate { Twitch() } );
Thread.Sleep(1000000); // do I have to yield here somehow?
}
}
void Twitch()
{
Debug.WriteLine("Twitch");
}
Run Code Online (Sandbox Code Playgroud)
你是对的,它永远不会触发的问题是你让线程进入睡眠状态并且从未启动过runloop.尝试:
NSRunLoop.Current.Run ();
Run Code Online (Sandbox Code Playgroud)
而不是你的
Thread.Sleep (1000000);
Run Code Online (Sandbox Code Playgroud)