[英].NET Core SocketIO - Cannot access disposed object
我使用SocketIOClientDotNet从流中获取数据( https://github.com/Quobject/SocketIoClientDotNet ),然后将这些数据保存到数据库中;
private readonly DataContext _context;
public SocketIo(DataContext context)
{
this._context = context;
}
public void SocketStart()
{
var socket = IO.Socket("myip");
socket.On("xx", async (data) =>
{
var test = await Update(data.ToString());
});
}
public async Task<SocketPrice> Update(string data)
{
SocketPrice socketStream = JsonConvert.DeserializeObject<SocketPrice>(data);
SocketPrice socketDB = await _context.SocketPrices.Where(s => s.Id == socketStream.Id).FirstOrDefaultAsync();
socketDB.value = socketStream.value;
await _context.SaveChangesAsync();
return socketDB;
}
从启动运行时;
在配置服务中; services.AddScoped<ISocketIoService, SocketIo>();
并在配置中; socket.SocketStart();
我收到错误消息;
未处理的异常:System.ObjectDisposedException:无法访问已处置的对象。 导致此错误的常见原因是,处理从依赖项注入中解决的上下文,然后稍后尝试在应用程序中的其他位置使用相同的上下文实例。 如果您在上下文上调用Dispose()或将上下文包装在using语句中,则可能会发生这种情况。 如果使用依赖项注入,则应让依赖项注入容器处理处理上下文实例。
将方法更改为同步时,该方法会运行,但会在完成之前重新启动,因此结果不会保存到数据库中。 我如何更改此设置以将新的传入数据保存到数据库?
注入IServiceProvider
。 在需要时解析DataContext
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.