MAUI 项目在 Android 上运行,但在 IOS 上崩溃
MAUI Project Works on Android But Crashes on IOS
我有一个使用 MAUI RC1 的项目,在 Android 模拟器上 运行 运行良好。当它在模拟的 iOS 设备上 运行s 时,它总是崩溃。有问题的代码基于表单的构造函数。我需要一些我需要 运行 异步的代码(你不能在构造函数中这样做),所以我的代码是这样启动的:
Task.Factory.StartNew( () =>
{
AppCheck();
});
所有代码现在所做的是创建一个全局范围变量的 属性,然后设置绑定上下文,如下所示:
BindingContext = App.Status;
我在 Mac 上看到一个对话框,其中模拟器 运行ning 显示它“意外退出”并包含大量故障转储详细信息。在 Android 模拟器上,一切正常。所以寻找关于在这里做什么的建议,即是否有某个地方我可以或应该上传转储文件,或者 iOS 不处理异步代码,或者 ??
谢谢,
史蒂夫
版本 1
在 Dispatcher 的线程 (MainThread) 上设置 BindingContext 可能更安全:
Dispatcher.Dispatch(() =>
BindingContext = ..
);
版本 2
如果你想在主线程上使用await
:
Dispatcher.Dispatch(async () =>
{
await ...;
BindingContext = ...
});
版本 3
如果您有异步代码,您更愿意 运行 在后台线程上:
Task.Run(async () =>
{
// On background thread.
await ...;
...
Dispatcher.Dispatch(() =>
{
// On Main thread.
BindingContext = ..
});
});
我有一个使用 MAUI RC1 的项目,在 Android 模拟器上 运行 运行良好。当它在模拟的 iOS 设备上 运行s 时,它总是崩溃。有问题的代码基于表单的构造函数。我需要一些我需要 运行 异步的代码(你不能在构造函数中这样做),所以我的代码是这样启动的:
Task.Factory.StartNew( () =>
{
AppCheck();
});
所有代码现在所做的是创建一个全局范围变量的 属性,然后设置绑定上下文,如下所示:
BindingContext = App.Status;
我在 Mac 上看到一个对话框,其中模拟器 运行ning 显示它“意外退出”并包含大量故障转储详细信息。在 Android 模拟器上,一切正常。所以寻找关于在这里做什么的建议,即是否有某个地方我可以或应该上传转储文件,或者 iOS 不处理异步代码,或者 ??
谢谢,
史蒂夫
版本 1
在 Dispatcher 的线程 (MainThread) 上设置 BindingContext 可能更安全:
Dispatcher.Dispatch(() =>
BindingContext = ..
);
版本 2
如果你想在主线程上使用await
:
Dispatcher.Dispatch(async () =>
{
await ...;
BindingContext = ...
});
版本 3
如果您有异步代码,您更愿意 运行 在后台线程上:
Task.Run(async () =>
{
// On background thread.
await ...;
...
Dispatcher.Dispatch(() =>
{
// On Main thread.
BindingContext = ..
});
});