我有一個MVC3項目,使用Ninject,實體框架和單位工作模式與服務層。Ninject範圍問題與任務/線程
我AsyncService類有啓動一個後臺任務,作爲一個例子,將用戶添加到用戶資料庫的功能。 我目前的問題是,在我得到DbContext已被處置的錯誤之前,任務只能正確運行幾秒鐘。 我的數據庫上下文,與Ninject的InRequestScope()注入似乎被處置,因爲InRequestScope()將其綁定到HttpContext。
我讀過有關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...
}
}
是否有一個示例代碼?傑森,你能在哪裏工作?我遇到了同樣的問題,並且下面的鏈接沒有幫助。 –
我有這個相同的問題,我很想看到這個場景的一些示例代碼。 –