我在使用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");
}
答案 0 :(得分:6)
你是对的,它永远不会触发的问题是你让线程进入睡眠状态并且从未启动过runloop。尝试:
NSRunLoop.Current.Run ();
而不是你的
Thread.Sleep (1000000);