Я пишу приложение Windows Phone, которое хранит данные в локальной базе данных. В моем приложении есть несколько потоков, которые обращаются к базе данных, и до этого момента я использовал описанный метод here с помощью AutoResetEvent, чтобы гарантировать, что только один поток может получить доступ к базе данных в любой момент времени.Многопроцессорный доступ к базе данных в Windows Phone
До сих пор это работало очень надежно, но теперь я хочу добавить ScheduledTask для выполнения некоторой работы в фоновом режиме, чтобы потенциально получить несколько процессов, конкурирующих сейчас за доступ к базе данных.
Может ли кто-нибудь посоветовать, как я могу адаптировать метод AutoResetEvent для использования в нескольких процессах на Windows Phone?
Я видел подходы с использованием Mutex. Если я получаю Mutex перед каждым вызовом DB, а затем выпускаю его позже (подобно тому, как я использую AutoResetEvent), это будет трюк? Существуют ли какие-либо потенциальные проблемы с этим методом? например: производительность?
Если два потока на переднем плане приложения делают запросы к базе данных, в то же время, то вы получите одну из этих ошибок: «Операция не может быть выполнена, так как операция в другом потоке не была завершена» InvalidOperationException InvalidOperationException «Операция не может быть выполнена во время вызова SubmitChanges.» Я не понимаю, почему это было бы иначе, если фоновая программа пытается получить доступ к db, поэтому ваш комментарий о том, что параллельный доступ не должен быть проблемой, немного сбивает с толку? Я нашел решение этой проблемы. Когда я получу запасной час, я отправлю его сюда :) –