如何使用 Xamarin Forms PCL 代码来自 WP8 中的后台任务

本文关键字:WP8 后台任务 代码 何使用 Xamarin Forms PCL | 更新日期: 2023-09-27 18:35:54

>我正在尝试使用 PCL 代码从 windows-phone-8 中的定期后台任务访问 SQLite 数据库。

但是,我收到此错误:InvalidOperationException: You MUST call Xamarin.Forms.Init(); prior to using it

尝试在像这样调用代理时执行Forms.Init()

    protected override void OnInvoke(ScheduledTask task)
    {
        Forms.Init();

投掷UnauthorizedAccessException: Invalid cross-thread access.

也尝试了Device.BeginInvokeOnMainThread(() => { Forms.Init(); });但也没有用。

在后台任务中使用 PCL 项目中的通用代码的正确方法是什么?

编辑:

  • 我在启动页面中调用Forms.Init()

  • 不从后台任务执行任何 UI 更新。尝试使用该DependencyService获取特定于平台的连接详细信息时,将引发异常:DependencyService.Get<IDatabaseConection>().GetConnection();

如何使用 Xamarin Forms PCL 代码来自 WP8 中的后台任务

通过使用不同的 IoC 容器解决了这个问题,正如@Jason所建议的那样。AutoFac为我做了这个伎俩。

首先尝试使用TinyIoC但得到此处引用的相同错误: Error CS0246: The type or namespace name 'BindingFlags' could not be found. Are you missing an assembly reference? (CS0246) .

其他应与 Xamarin 配合使用的 IoC 容器。

目前还不清楚为什么Xamarin的IoC需要Forms.Init()调用。