我似乎不能在WinRT后台任务中使用依赖注入

本文关键字:依赖 注入 后台任务 WinRT 不能 | 更新日期: 2023-09-27 18:01:40

我正在实现IBackgroundTask在Windows运行时组件,我想注入一个logger依赖到它,但应用程序退出时,它调用后台任务。它甚至不会进入构造函数。我使用Ninject作为DI容器,在应用程序的其他任何地方使用它都没有问题。

我想这样做:

private readonly ILog _logger;
public BackroundTask(ILog logger)
{
    _logger = logger;
}
    public async void Run(IBackgroundTaskInstance taskInstance)
    {
        var deferral = taskInstance.GetDeferral();
        try
        {
            // do something here
        }
        catch (Exception ex)
        {
            // log the error with injected logger...
            logger.ErrorFormat("{0}Error in QueueTimer {1}{0}",
                Environment.NewLine, ex.ToString());
        }
        deferral.Complete();
    }

我已经没有成功与任何我已经尝试过,现在只是登录OnComplete方法在调用。cs文件。

我似乎不能在WinRT后台任务中使用依赖注入

根据我有限的创建Windows Store应用程序的经验,你必须为后台任务提供默认构造函数;任何其他构造函数都不会被调用。

希望我是错的,虽然;能够传递后台任务的依赖关系是实用的,但我不确定它是否有意义,因为你自己的代码可能在任务开始时甚至没有运行。我认为在你的程序和任务之间进行通信的唯一方法是使用永久存储。