EDIT: В версии 2.2 драйвера они добавляют синхронные версии для всех асинхронных операций, которые являются синхронными почти полностью вниз. Если вы не можете использовать async-await по какой-то причине, это следующий лучший вариант.
Вы должны быть с помощью async
операции, как водитель async
и операции по своей природе асинхронной (будучи в основном ввода/вывода, как правило, на удаленный сервер).
Но, если вы должны держать вещи синхронны у вас есть 3 вариант, заказанный из наиболее рекомендуемых наималейших:
- продолжать использовать старую (v1.x) версию драйвера с синхронным API.
- Используйте новый драйвер, но с устаревшим API (
client.GetServer
). Он требует другого пакета nuget (называемого Legacy) и имеет оба типа API.
- Используйте операции
async
и блокируйте их с помощью Task.Result
или Task.Wait
.
Старая версия является предпочтительной, поскольку она использует синхронные операции ввода-вывода, которые обычно лучше, чем использование async
и блокировка на них.
другие варианты, как блок на async
операций, но водитель унаследованной задумчиво реализованы, протестированы и поддерживаются таким образом, блокировка делается в хорошем смысле (т.е. с использованием ConfigureAwait(false)
и GetAwaiter().GetResult()
везде)
спасибо за ваше время – fatihyildizhan
Стоит прочитать этот https://www.mongodb.com/blog/post/introducing-20-net-driver – KCD