Здравствуйте, Roman039, Вы писали:
R>Я, читая эту статью, нашел и описание вами предложенного варианта. С Control'ом нельзя: UI не обязательно будет WinForms.
Цикл выборки сообщений будет? Или тоже не обязательно?
... << RSDN@Home 1.2.0 alpha 5 rev. 31 on Windows 7 6.1.7601.65536>>
Здравствуйте, Roman039, Вы писали:
R>Подскажите, а такой манёвр (переключение контекста синхронизации) возможен только при использовании UI-потока?
Нет никакого такого маневра. Тебе опять чего то не то показалось. Контекст синхронизации это всего лишь способ абстрагироваться от конкретного способа синхронизации для конкретного потока.
R> Вообщем если инициализировать контекст в форме, то все работает как требуется.
Его вообще обычно никто явно не инициализирует.
R> А если попробовать реализовать подобную схему с обычными (не UI) классами, то значение SinhronizationContext.Current сбрасывается в null и фактического переключения не происходит.
Инициализация SyncContext происходит неявно. В частности, в случае WinForms, это делается в конструкторе базового класса Control. Т.е. при создании любого элемента управления контекст инициализируется. Чтобы не заморачиваться, использовать следует класс AsyncOperationManager, а не контекст напрямую. И да, если цикла выборки сообщений в потоке нет, то отработка, естественно, будет происходить в потоке вызвавшем (или в отдельном, если испольтзовать Post).
... << RSDN@Home 1.2.0 alpha 5 rev. 31 on Windows 7 6.1.7601.65536>>
Здравствуйте, HowardLovekraft, Вы писали:
HL>Реализации контекста синхронизации из коробки, AFAIK, только для UI (WinForms/WPF/SL).
И для ASP.NET. Но там он почти ничего не делает.
HL>А как и зачем вы собираетесь использовать контекст синхронизации для не-UI-потоков?
Он же написал — передать управление из другого потока в основной

... << RSDN@Home 1.2.0 alpha 5 rev. 31 on Windows 7 6.1.7601.65536>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Он же написал — передать управление из другого потока в основной 
"Нет, все понятно, но шо конкретно?..." (С) И, главное, зачем?
Здравствуйте, HowardLovekraft, Вы писали:
HL>Здравствуйте, AndrewVK, Вы писали:
AVK>>Он же написал — передать управление из другого потока в основной
HL>"Нет, все понятно, но шо конкретно?..." (С) И, главное, зачем?
Вы помогли мне решить вопрос с передачей управления в UI-поток. Этот вопрос закрыт. Вопрос о передаче управления в любой другой поток возник из любопытства (просто хотел уточнить можно так сделать или нет) и не имеет отношения к решению задачи. Я нашел
статью в которой приводится пример переключения контекста без явного указания на UI-поток (т.е. не указано, что однажды создавалось что то вроде Control'а). Естественно в чистом виде этот пример не заработал (потому что SynhronizationContext.Current оставался null'ом). Вот я и хотел уточнить этот момент.