我正在使用Xamarin Forms。在内容页面中,我想在单独的线程中编写一些代码,因为应用程序在一些随机时间间隔后会冻结。Xamarin表单:如何从内容页面调用绑定服务?有没有办法在单独的线程中编写代码?
在我的代码有一个字节[]转化成字符串的方法,如下面
BitConverter.ToString(数据); 需要时间来执行,所以任何人都有决议,请分享它。
在此先感谢。
我正在使用Xamarin Forms。在内容页面中,我想在单独的线程中编写一些代码,因为应用程序在一些随机时间间隔后会冻结。Xamarin表单:如何从内容页面调用绑定服务?有没有办法在单独的线程中编写代码?
在我的代码有一个字节[]转化成字符串的方法,如下面
BitConverter.ToString(数据); 需要时间来执行,所以任何人都有决议,请分享它。
在此先感谢。
通过Task.Run
使用线程池中基于任务的线程:
await Task.Run(() =>
{
// do some work....
Device.BeginInvokeOnMainThread(() =>
{
// back on ui thread, hide progress indicator, show some dialog, etc...
});
});
你可以让你的转换方法的返回类型为任务,并使其异步。然后,您可以使用Task.Run使用.NET的多线程概念。例如:
转换方法:
public async Task Converter()
{
// your conversion code
}
从你调用这个方法的地方:
await Task.Run(Converter);
调试时,您可以在线程窗口中看到该任务将在一个单独的线程中运行。调试时按ctrl + alt + H启用线程窗口。
其仍然冻结的应用程序..有没有任何解决方法 –
@Sachinsalunkhe?不要“等待”任务的完成。删除'await'并将它变成火,并忘记后台任务,您将不得不在该任务的执行结束时提供一个回调,以便您知道它已完成... – SushiHangover