0
我使用統一注入和這樣的:Unity將PerRequestLifetimeManager注入後臺任務?
container.RegisterType<IDbContextFactory, DbContextFactory>(new PerRequestLifetimeManager());
container.RegisterType<IRepository<Log>, Repository<Log>>();
//....other repositories here...
container.RegisterType<ILogService, LogService>();
//...other services here...
,我有一個任務類,如:
public class MyTaskClass
{
LogService logService;
public MyTaskClass(LogService logService)
{
this.logService = logService;
}
async void ExecuteTasks()
{
Task t1 = Task.Factory.StartNew(() =>
{
logService.Write("Test");
});
Task t2 = Task.Factory.StartNew(() =>
{
logService.Write("Test");
});
await Task.WhenAll(t1, t2);
}
}
,並使用container.Resolve方法來創建MyTaskClass實例,但是它會發生由於PerRequestLifetimeManager,兩個任務使用由DbContextFactory生成的相同dbcontext的錯誤,如果我想通過統一創建不同的dbcontext實例,所以我必須註冊不同的IDbContextFactory的lifetimemanager?
感謝
如果您的工廠總是返回相同的實例,那麼它不是工廠 –