Используются ли в современном C# SynchronuzationContext или ContextBoundObject?

255
09 февраля 2018, 18:05

Собственно, вопрос.

Используются ли данные штуки в современном C#?

Как я понимаю, они нужны для того, что бы заставить работать с объектом в однопоточной манере, незаморачиваясь с lock'ми.

Я прочитал некоторые статьи, где писалось, что этих вещей лучше избегать, так как класс становится ограниченным и какой-нибудь стандартный lock профитнее. Так ли это или в каких сценариях это может пригодится?

На сколько я знаю, то только UI поток "из коробки" имеет свой SynchronuzationContext ?

Answer 1

В современном C# они широко используются "за кулисами".

Например, в WinForms можно использовать SynchronizationContext.Send и SynchronizationContext.Post, а можно их эквиваленты Control.Invoke и Control.BeginInvoke.

В TAP часто используется TaskScheduler.FromCurrentSynchronizationContext() при необходимости работать с GUI. То есть захватывается контекст и сообщения отправляются в него. Это проще и удобнее.

Answer 2

ContextBoundObject используется в технологии NET.Remoting. Он есть "в коробке"

READ ALSO
Не загружается ссылка из сборки на сборку из ресурсов

Не загружается ссылка из сборки на сборку из ресурсов

Извиняюсь за туфтологию, но в общем то проблема примерно так и выглядит

224
C#. WepApi для desktop программы (WPF или WinForms)

C#. WepApi для desktop программы (WPF или WinForms)

Здравствуйте хотел спросить как организовать HTTP WepApi доступ к приложению на WPFНеобходимо реализовать контроль состояния объекта (GET запросы...

233
Счетчик с очередью

Счетчик с очередью

Реализовывал счетчик задач с очередью, но возникает timeout на последней пачке запросов, клиент ожидает и соединение разрываетсяСкорее всего...

247
Работа с gridView в asp.net

Работа с gridView в asp.net

ЗдравствуйтеЕсть на странице gridView

227