C# 我似乎不能在WinRT BackgroundTask中使用依赖项注入
我正在Windows运行时组件中实现IBackgroundTask,我想向其中注入一个记录器依赖项,但应用程序在调用后台任务时退出。它甚至不会进入构造函数。我将Ninject用作DI容器,在应用程序的其他任何地方使用它都没有问题 我想这样做:C# 我似乎不能在WinRT BackgroundTask中使用依赖项注入,c#,dependency-injection,background,windows-runtime,C#,Dependency Injection,Background,Windows Runtime,我正在Windows运行时组件中实现IBackgroundTask,我想向其中注入一个记录器依赖项,但应用程序在调用后台任务时退出。它甚至不会进入构造函数。我将Ninject用作DI容器,在应用程序的其他任何地方使用它都没有问题 我想这样做: private readonly ILog _logger; public BackroundTask(ILog logger) { _logger = logger; } public async void Run(IBackgrou
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方法。在我创建Windows应用商店应用程序的有限经验中,您必须为后台任务提供默认构造函数;不会调用任何其他构造函数
不过,希望我在这一点上是错的;能够传入后台任务的依赖项是很实际的,但我不确定这是否有意义,因为任务启动时您自己的代码甚至可能没有运行。我认为在程序和任务之间进行通信的唯一方法是使用永久存储器。ILOG必须编译以支持WinRT。错误到底是什么?请注意,除事件处理程序外,通常应避免使用
async void
。你可能有一个有效的理由来做这件事,但是如果你不这么做的话,我要考虑的是,我使用一个异步调用把数据转发回服务器,然后我需要记录POST的成功或失败。ILOG被编译成一个Windows运行时组件。事件日志中的错误是:激活应用程序a.Winrt.Ui_tjekt9a7fmk0j!Windows.BackgroundTasks合约的应用程序失败,错误:未实现