Да, sqlserverce не является многопоточным.
Лучший и самый ленивый способ - каждый вызов вставки, задача обновления, блокировка объекта, выполнение необходимой операции, а затем снятие этой блокировки.
У меня был класс, который делает некоторые вставки (ввод GPS-координаты в БД) в зависимости от таймера, события (pda, подключенного к линии электропередачи переменного тока) и другого таймера для отправки этих данных в веб-службу через gprs. Конечный результат: сбой sql, причина, по которой он не является многопоточным.
После некоторого исследования нашел эту статью C Многопоточность Обмен данными между потоками , что помогло в моем случае.