2

我正在 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 方法。

4

1 回答 1

0

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

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

于 2013-03-07T23:31:46.097 回答