我正在研究 Xamarin 表单。在内容页面中,我想在单独的线程中编写一些代码,因为应用程序在某个随机间隔后冻结。
在我的代码中有 byte[] 到字符串方法的转换,如下所示
BitConverter.ToString(Data); 需要时间来执行,所以任何有解决方案的人请分享它。
提前致谢。
我正在研究 Xamarin 表单。在内容页面中,我想在单独的线程中编写一些代码,因为应用程序在某个随机间隔后冻结。
在我的代码中有 byte[] 到字符串方法的转换,如下所示
BitConverter.ToString(Data); 需要时间来执行,所以任何有解决方案的人请分享它。
提前致谢。
通过以下方式使用线程池中基于任务的线程Task.Run
:
await Task.Run( () =>
{
// do some work....
Device.BeginInvokeOnMainThread(() =>
{
// back on ui thread, hide progress indicator, show some dialog, etc...
});
});
您可以将转换方法的返回类型设置为 Task 并使其异步。然后,您可以通过 Task.Run 使用 .NET 的多线程概念。例如:
转换器方法:
public async Task Converter()
{
// your conversion code
}
从您调用此方法的地方:
await Task.Run(Converter);
调试时,您可以在线程窗口中看到该任务将在单独的线程中运行。调试时按 ctrl+alt+H 启用线程窗口。