Xamarin.Forms中的线程的一些非常奇怪的问题:
从MainPage
使用
Thread
中从主线程(〜每2分钟)执行一次操作
Debug.Writeline("now before ThreadPool");
ThreadPool.QueueUserWorkItem(o =>
{
Debug.Writeline("in thread!");
action1(); //takes ~ 2-3 seconds to excecute
} );
但是,如果另一页位于顶部:
Navigation.PushAsync(new SettingsPage(), true);
(因此MainPage在后台/消失了),以上"工作项目"永远不会被执行!最后的调试日志文本实际上是"现在在ThreadPool"之前,但是"在线程中!"未记录(因为某些奇怪的原因,线程未被执行...)。
没有错误,它只是没有被执行。如果MainPage位于前台,则一切正常。 有什么想法吗?
答案 0 :(得分:0)
好的,似乎Xamarin的ThreadPool实现中存在一个错误(或至少有一些意外的限制):
如果我用
替换上述ThreadPool.QueueUserWorkItem
new System.Threading.Thread(new System.Threading.ThreadStart(() =>
{
Debug.Writeline("in thread!");
action1();
})).Start();
然后它运作得很好!