我正在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方法。
答案 0 :(得分:0)
由于我在创建Windows应用商店应用程序方面的经验有限,您必须为后台任务提供默认构造函数;任何其他构造函数都不会被调用。
希望我对此错了;能够传递后台任务的依赖关系是切实可行的,但我不确定它是否有意义,因为在任务启动时你自己的代码甚至可能都没有运行。我认为在程序和任务之间进行通信的唯一方法是使用永久存储。