2011-01-19 11 views
5

Tengo un problema al usar un NSTimer en MonoTouch. Para empezar, ejecuté un NSTimer en mi hilo principal, que funcionó. Sin embargo, he movido el temporizador a un hilo separado, y nunca recibo una devolución de llamada. Supongo que esto se debe a que mi hilo de estilo .NET no es un ciclo de ejecución, pero soy bastante nuevo en MonoTouch/iOS, así que no estoy seguro.Problema al usar NSTimer en MonoTouch .NET thread

Extraje el código para un proyecto de prueba y tuve el mismo problema. Este es el código que falla:

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

Respuesta

6

Estás en lo correcto, el problema nunca se dispara es que usted ha puesto el hilo a dormir y nunca empezar una runloop. Proveedores:

NSRunLoop.Current.Run(); 

En lugar de su

Thread.Sleep (1000000); 
+0

fantástico, muchas gracias por su ayuda. Eso funcionó perfectamente. – vlad259

Cuestiones relacionadas