2017-01-10 8 views
0

にXamarin.Formsでスレッドを持ついくつかの非常に奇妙な問題は実行されません:Xamarinフォーム:ページ場合は、スレッド背景

をアクションは使用して新しいThreadにメインスレッド(〜2分ごと)から実行されるMainPageから

しかしながら
Debug.Writeline("now before ThreadPool"); 

ThreadPool.QueueUserWorkItem(o => 
      { 
       Debug.Writeline("in thread!"); 
       action1(); //takes ~ 2-3 seconds to excecute 
      }); 

、別のページが上にある場合:

Navigation.PushAsync(new SettingsPage(), true); 

(従って、バックグラウンドでメインページが/消失)、ABO ve "workitem"は決して実行されません!最後のデバッグログテキストは実際には「今すぐThreadPoolの前に」ですが、「スレッドで!」 (何らかの奇妙な理由でスレッドが実行されないために)ログに記録されません。

エラーはありません。実行されていません。 MainPageがフォアグラウンドにある場合、すべて正常に動作します。 アイデア

+1

どのように現在のページの上にページをプッシュしますか?投稿番号: – Demitrian

+0

@demitrian:いくつかのコードを追加しました – fritz

答えて

0

[OK]を、XamarinのThreadPoolの実装のバグ(あるいは、少なくともいくつかの予期しない限界)があるようだ。

私は

new System.Threading.Thread(new System.Threading.ThreadStart(() => 
     { 
      Debug.Writeline("in thread!");     
      action1(); 

     })).Start(); 

で上記ThreadPool.QueueUserWorkItemを交換する場合、それだけで正常に動作します!

+1

これを行う別の方法として、私は通常、 'Task.Factory.StartNew()'を使用してバックグラウンドタスクを開始します。 – BrewMate

関連する問題