gpt4 book ai didi

c# - 我似乎无法在 WinRT BackgroundTask 中使用依赖注入(inject)

转载 作者:太空宇宙 更新时间:2023-11-03 16:17:54 34 4
gpt4 key购买 nike

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

最佳答案

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

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

关于c# - 我似乎无法在 WinRT BackgroundTask 中使用依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15161393/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com