Dans une configuration Autofac: J'ai enregistré une dépendance à .InstancePerRequest()
et une partie de mon code utilise le mot-clé async
ou .continueWith()
. Ma question est: si la dépendance est utilisée dans une continuation qui est exécutée de manière asynchrone, la dépendance sera-t-elle seulement éliminée une fois que le code asynchrone a été exécuté ou pourrait-il arriver avant?Une dépendance enregistrée comme .InstancePerRequest() dans autofac est-elle toujours disponible dans une continuation asynchrone?
scénario spécifique:
// in IocConfig.cs
ContainerBuilder.Register(c => Context.CreateFromToken(
c.Resolve<IUser>().Name,
.As<Context>()
.InstancePerRequest();
Puis dans un fichier que j'ai ce code:
// elsewhere in the code for a specific request..
client.PostAsync(new Uri(_context.GetSetting("SomeEndpoint")),requestContent)
.ContinueWith(task =>
{
ErrorLog.Write(_context.CreateErrorEntry($"Request: sent {task.Result.StatusCode} result: {task.Result.ToJson()}", LogLevel.Debug));
});
Est-ce que le _context
ici (qui est .InstancePerRequest()
) est toujours disponible dans le .ContinueWith()
, ou peut-il être disposé?