如何在 Timer 任务上调用新的 Ninject 上下文?很难将 ninject 范围配置为 unitofwork。如果我设置为 InRequestScope() 它不适用于非请求任务。所以我像下面这样设置,这样我就可以获得任务的 InThreadScope:
kernel.Bind<IUnitOfWork>().To<myEntities>().InScope(ctx => HttpContext.Current ?? StandardScopeCallbacks.Thread(ctx));
但是那样,当我设置一个计时器时
Timer timer = new Timer(_ => DelayedDisconnect(chatUser.User.AuthorizationId), null, TimeSpan.FromSeconds(10), TimeSpan.FromMilliseconds(-1));
dbContext 不会用新的数据库值刷新。
public void DelayedDisconnect(string authorizationId)
{
var myChatUser = GetChatUserByClaimedIdentifier(authorizationId);
if (!myChatUser.ChatClients.Any()) // old state (doesn't reflect database changes from 10 seconds ago).
那么...如何调用新的 Ninject“上下文”来反映当前状态/数据库值?