2017-08-31 2 views
0

Ich arbeite an Xamarin Forms. In der Inhaltsseite möchte ich Code in einem separaten Thread schreiben, da die App nach einem zufälligen Intervall erstarrt.Xamarin Forms: Wie man gebundenen Service von der Inhaltsseite anruft? Gibt es eine Möglichkeit, Code in einem separaten Thread zu schreiben?

In meinem Code ist es Konvertierung von byte [] zu String-Methoden wie unter

BitConverter.ToString (Data); nehmen sich Zeit, um auszuführen, damit jeder eine Entschließung darüber haben, teilen Sie es bitte.

Vielen Dank im Voraus.

Antwort

0

Verwenden Sie ein-Task-basierten Thread aus dem Thread-Pool über Task.Run:

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

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

es ist immer noch freezing app .. gibt es eine Umgehungslösung –

+0

@Sachinsalunkhe? Warten Sie nicht auf das Ende der Aufgabe. Entferne 'erwarten' und verwandle es in ein Feuer und vergesse die Hintergrundaufgabe, du musst einen Callback am Ende der Ausführung dieser Aufgabe bereitstellen, damit du weißt, dass es erledigt ist ... – SushiHangover

0

Sie können Ihre Conversion-Methode der Rückgabetyp machen Aufgabe zu sein und es async zu machen. Dann können Sie das Multi-Threading-Konzept von .NET verwenden, indem Sie Task.Run verwenden. Zum Beispiel:

Converter Methode:

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

Von der Stelle, Sie diese Methode aufrufen:

await Task.Run(Converter); 

Während des Debuggens können Sie in Thread-Fenster sehen, die Aufgabe in einem separaten Thread ausgeführt wird . Aktivieren Sie das Thread-Fenster während des Debuggens mit Strg + Alt + H.

Verwandte Themen