asp.net-mvc-3 – 任务/线程的Ninject Scope问题
发布时间:2020-05-23 23:12:31 所属栏目:asp.Net 来源:互联网
导读:我有一个MVC3项目,它使用Ninject,实体框架和工作单元模式与服务层. 我的AsyncService类有一个函数可以启动后台任务,例如,将用户添加到用户存储库. 我当前的问题是,在我收到DbContext已被丢弃的错误之前,任务只能正确运行几秒钟. 我注入了Ninject的InRequestSc
|
我有一个MVC3项目,它使用Ninject,实体框架和工作单元模式与服务层. 我的AsyncService类有一个函数可以启动后台任务,例如,将用户添加到用户存储库. 我已经读过InThreadScope(),但是我不确定如何在我的MVC项目中正确实现它. 我的问题是:在我的任务中使用Ninject的正确方法是什么? public class AsyncService
{
private CancellationTokenSource cancellationTokenSource;
private IUnitOfWork _uow;
public AsyncService(IUnitOfWork uow)
{
_uow = uow;
}
public void AsyncStartActivity(Activity activity)
{
...snip...
this.cancellationTokenSource = new CancellationTokenSource();
var cancellationToken = this.cancellationTokenSource.Token;
var task = Task.Factory.StartNew(() =>
{
foreach (var user in activity.UserList)
{
this._uow.UserRepository.Add(new User() {UserID = user});
}
this._uow.Save();
},cancellationToken);
...snip...
}
}
解决方法InRequestScope’d对象在请求结束时处理,因此在这种情况下不能使用它. InThreadScope也不适合将UoW重用于多个任务.您可以做的是将AsyncService声明为使用NamedScope扩展的所有对象的作用域对象. 见http://www.planetgeek.ch/2010/12/08/how-to-use-the-additional-ninject-scopes-of-namedscope/ (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何在ASP.NET MVC4项目之间共享HTML
- asp.net – 任何有关绘图组件/库的经验
- asp.net-mvc – Ajax Request返回HTTP错误500,使用MVC和$.a
- ASP.NET MVC 3中的当前年份
- .net – 应用程序池限制
- asp.net – IIS HTTP错误500.19
- ASP.NET Response.Cache.SetNoStore()与Response.Cache.Set
- asp.net – LINQ:不支持查询运算符’ElementAtOrDefault’
- asp.net-core – CoreCLR中的哈希算法
- asp.net – 什么是Appdomain回收
