2011-01-19 10 views
5

Mam problem z używaniem NSTimer w MonoTouch. Na początek uruchomiłem NSTimer w moim głównym wątku, który działał. Jednak przeniosłem timer do osobnego wątku i nigdy nie otrzymałem oddzwonienia. Zgaduję, że to dlatego, że mój wątek w stylu .NET nie jest pętlą uruchamianą - ale jestem całkiem nowy w MonoTouch/iOS, więc nie jestem pewien.Problem przy użyciu NSTimer w wątku MonoTouch .NET

Wyodrębniłem kod do projektu testowego i miałem ten sam problem. Jest to kod, który nie:

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"); 
} 

Odpowiedz

6

Masz rację, sprawa nigdy nie odpala jest to, że umieściliśmy nić do spania i nie rozpoczął runloop. Spróbuj:

NSRunLoop.Current.Run(); 

zamiast swojego

Thread.Sleep (1000000); 
+0

fantastyczne, dziękuję za pomoc. To działało idealnie. – vlad259