【问题标题】:DependencyResolver returns null in async tasksDependencyResolver 在异步任务中返回 null
【发布时间】:2013-07-01 08:05:58
【问题描述】:

我试图运行这个:

DependencyResolver.Current.GetService<ITask>();

在这段代码中:

Task.Factory.StartNew(
() =>
{
    var result = DependencyResolver.Current.GetService<ITask>();

});

虽然它抛出了一个空引用异常。

我知道这是另一个线程,但我正在考虑如何让依赖解析器在这种情况下工作,或者我应该初始化并直接使用“任务”类而不是接口。

【问题讨论】:

  • 在您的上下文中什么是 null?变量result? DependencyResolver.Current?还是方法调用 GetService 会抛出 NullReferenceException?
  • GetService 抛出 NullReferenceException
  • 我在想也许在线程中我需要重新初始化所有东西,虽然我想这会很难
  • DependencyResolver.Current 不是线程静态的或基于上下文的;它只是一个静态/单例。如果GetService 抛出NullReferenceException,则您的配置可能有问题。您的配置如何?
  • DependencyResolver 是如何注册的?可以出示一下代码吗?

标签: c# dependency-injection unity-container


【解决方案1】:

我无法通过

解决此问题
Task.Factory.StartNew

虽然我创建了 AsyncController 和 here 描述的两个方法

现在它可以在异步模式下运行,并且 IoC 也可以完美运行。

希望这个答案能帮助像我这样的人:)

【讨论】:

    猜你喜欢
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 2012-11-01
    • 2015-01-12
    • 2014-10-01
    • 2016-08-27
    相关资源
    最近更新 更多