我似乎无法在WinRT BackgroundTask中使用依赖注入

时间:2013-03-01 15:37:55

标签: c# dependency-injection background windows-runtime

我正在Windows运行时组件中实现IBackgroundTask,我想在其中注入一个记录器依赖项,但是当它调用后台任务时应用程序退出。它甚至不会进入构造函数。我正在使用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();
    }

我尝试过的任何内容都没有成功,现在只需在调用.cs文件中登录OnComplete方法。

1 个答案:

答案 0 :(得分:0)

由于我在创建Windows应用商店应用程序方面的经验有限,您必须为后台任务提供默认构造函数;任何其他构造函数都不会被调用。

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