Невозможно получить доступ к удаленному экземпляру контекста. Распространенной причиной этой ошибки является удаление экC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно получить доступ к удаленному экземпляру контекста. Распространенной причиной этой ошибки является удаление эк

Сообщение Anonymous »


После добавления поля _timer я получаю эту ошибку. Прежде чем я добавил поле _timer, оно работало как положено. Это код класса концентратора signalR.

System.ObjectDisposeException: 'Невозможно получить доступ к удаленному контексту пример. Распространенной причиной этой ошибки является удаление экземпляра контекста. это было решено путем внедрения зависимостей, а затем при попытке используйте тот же экземпляр контекста в другом месте вашего приложения. Это может происходит, если вы вызываете Dispose в экземпляре контекста или завернув его в оператор using. Если вы используете зависимость инъекции, вы должны позволить контейнеру внедрения зависимостей позаботиться размещения экземпляров контекста. Имя объекта: «xxContext».

публичный класс ProgressHub: Hub { частный MyContext только для чтения _dbContext; частный таймер только для чтения _timer; общедоступный ProgressHub (MyContext dbContext) { _dbContext = dbContext; _timer = новый таймер (асинхронное состояние => ожидание SendProgressUpdate(), null, TimeSpan.Zero, TimeSpan.FromSeconds(30)); } общедоступная асинхронная задача SendProgressUpdate() { вар totalCompleted = _dbContext.xxx; // код удален для краткости } } Пыталась реализовать метод Dispose, но безрезультатно.
публичный класс ProgressHub: Hub { частный MyContext только для чтения _dbContext; частный таймер _timer; частный bool _timerDispose = ложь; общедоступный ProgressHub (MyContext dbContext) { _dbContext = dbContext; _timer = новый таймер (асинхронное состояние => ожидание SendProgressUpdate(), null, TimeSpan.Zero, TimeSpan.FromSeconds(30)); } общедоступная асинхронная задача SendProgressUpdate() { если (_timerDispose) { возвращаться; } // Здесь происходит ошибка. вар totalCompleted = _dbContext.xxx; } публичная недействительность Dispose() { _timer?.Change(Timeout.Infinite, Timeout.Infinite); _timer?.Dispose(); _timerDispose = правда; } }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»