Re[5]: С# многопоточность
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 12.04.12 16:49
Оценка:
Здравствуйте, Roman039, Вы писали:

R>Я, читая эту статью, нашел и описание вами предложенного варианта. С Control'ом нельзя: UI не обязательно будет WinForms.


Цикл выборки сообщений будет? Или тоже не обязательно?
... << RSDN@Home 1.2.0 alpha 5 rev. 31 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[9]: С# многопоточность
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 12.04.12 16:49
Оценка:
Здравствуйте, 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>>
AVK Blog
Re[10]: С# многопоточность
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 12.04.12 16:53
Оценка:
Здравствуйте, 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>>
AVK Blog
Re[11]: С# многопоточность
От: HowardLovekraft  
Дата: 12.04.12 17:42
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Он же написал — передать управление из другого потока в основной

"Нет, все понятно, но шо конкретно?..." (С) И, главное, зачем?
Re[12]: С# многопоточность
От: Roman039  
Дата: 13.04.12 06:32
Оценка:
Здравствуйте, HowardLovekraft, Вы писали:

HL>Здравствуйте, AndrewVK, Вы писали:


AVK>>Он же написал — передать управление из другого потока в основной

HL>"Нет, все понятно, но шо конкретно?..." (С) И, главное, зачем?

Вы помогли мне решить вопрос с передачей управления в UI-поток. Этот вопрос закрыт. Вопрос о передаче управления в любой другой поток возник из любопытства (просто хотел уточнить можно так сделать или нет) и не имеет отношения к решению задачи. Я нашел статью в которой приводится пример переключения контекста без явного указания на UI-поток (т.е. не указано, что однажды создавалось что то вроде Control'а). Естественно в чистом виде этот пример не заработал (потому что SynhronizationContext.Current оставался null'ом). Вот я и хотел уточнить этот момент.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.