Подтвердить что ты не робот

Linq-to-SQL DataContext для нескольких потоков

Как обрабатывать DataContext Linq-to_SQL для нескольких потоков?

Должен ли я создавать глобальный статический DataContext, чтобы все потоки использовали и фиксировали изменения в самом конце или я должен создать контекст для потока и использовать этот экземпляр для всего внутри этого потока?

4b9b3361

Ответ 1

DataContext не является потокобезопасным; использование его непосредственно из нескольких потоков вызовет #fail; наличие глобального статического контекста данных приведет к #fail и вызовет неконтролируемый рост памяти (контекст данных включает в себя диспетчер идентификации и изменение трекера для каждого объекта, который только растет со временем, так как больше объектов коснется)

Контекст данных в идеале должен использоваться для единицы работы; вращать один; сделайте что-нибудь (это связано с областью действия, то есть не с целым временем жизни приложения), и удалите его. Поэтому ИМО настоящий ответ здесь - "привязать его к той части работы". Только вы можете знать, что это в вашем приложении; это может быть единственный метод, это может быть запрос страницы на веб-странице, это может быть таймер "галочкой" в службе. Кто знает...