2011-01-19 8 views
5

MonoTouchでNSTimerを使用する際に問題があります。まず、メインスレッドでNSTimerを実行しました。しかし、私は別のスレッドにタイマを移動した、と私は決してコールバックを取得します。これは、.NETスタイルのスレッドが実行ループではないためです。しかし、私はMonoTouch/iOSにはかなり新しく、そのため、わかりません。MonoTouch .NETスレッドでNSTimerを使用している問題

テストプロジェクトにコードを抽出しましたが、同じ問題がありました。これは失敗するコードです:

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

答えて

6

あなたは正しいですが、発生しないという問題はスレッドをスリープ状態にして、実行ループを開始していないことです。試してみてください。代わりにあなたの助けのためのあなたの

Thread.Sleep (1000000); 
+0

ファンタスティック、おかげでたくさんの

NSRunLoop.Current.Run(); 

を。それは完璧に働いた。 – vlad259

関連する問題