2017-08-31 1 views
0

私はXamarinフォームに取り組んでいます。コンテンツページでは、アプリケーションがランダムな間隔でフリーズしているため、別のスレッドにコードを書きたいと思っています。Xamarinフォーム:コンテンツページからバインドされたサービスを呼び出す方法は?別のスレッドにコードを書く方法はありますか?

私のコード内のバイトの変換は

BitConverter.ToString(データ)以下のような文字列方法[]があります。 は実行に時間がかかりますので誰でも解決してください。

ありがとうございます。

答えて

0

Task.Runを経由してスレッドプールからタスクベースのスレッドを使用します。

await Task.Run(() => 
{ 
    // do some work.... 

    Device.BeginInvokeOnMainThread(() => 
    { 
     // back on ui thread, hide progress indicator, show some dialog, etc... 
    }); 
}); 
+0

まだフリーズしているアプリはありますか?回避策はありますか –

+0

@Sachinsalunkhe?タスクの終了を「待つ」ことはしないでください。 'await'を削除し、それを火に置き換えてバックグラウンドタスクを忘れると、そのタスクの実行終了時にコールバックを提供しなければならないので、その完了を知ることができます。 – SushiHangover

0

あなたが仕事であると非同期にそれを作るためにあなたの変換メソッドの戻り値の型を作ることができます。次に、Task.Runを使用して.NETのマルチスレッドの概念を使用できます。たとえば、次のように

コンバータ方式:

public async Task Converter() 
{ 
// your conversion code 
} 

場所から、あなたは、このメソッドを呼び出している:

await Task.Run(Converter); 

デバッグ中、あなたはタスクが別のスレッドで実行されるスレッドのウィンドウで見ることができます。デバッグ中にctrl + alt + Hでスレッドウィンドウを有効にします。

関連する問題