2011-01-19 35 views
5

Tôi gặp sự cố khi sử dụng NSTimer trong MonoTouch. Để bắt đầu với tôi chạy một NSTimer trong thread chính của tôi, mà làm việc. Tuy nhiên, tôi đã chuyển bộ đếm thời gian sang một chuỗi riêng biệt và tôi không bao giờ nhận được cuộc gọi lại. Tôi đoán điều này là bởi vì thread phong cách NET của tôi không phải là một vòng lặp chạy - nhưng tôi là khá mới để MonoTouch/iOS vì vậy không chắc chắn.Sự cố khi sử dụng NSTimer trong MonoTouch .NET thread

Tôi đã trích xuất mã cho một dự án thử nghiệm và có cùng một vấn đề. Đây là mã không thành công:

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

Trả lời

6

Bạn là chính xác, vấn đề không bao giờ xảy ra là bạn đã đặt luồng ngủ và không bao giờ bắt đầu chạy vòng lặp. Hãy thử:

NSRunLoop.Current.Run(); 

Thay vì bạn

Thread.Sleep (1000000); 
+0

Fantastic, cảm ơn rất nhiều sự giúp đỡ của bạn. Điều đó làm việc hoàn hảo. – vlad259

Các vấn đề liên quan