lock
{
Dispatcher.BeginInvoke(DispatcherPriority.Send, (SendOrPostCallback)delegate(object o)
{
DoSomething();
}
}
Сохраняется ли блокировка до тех пор, пока Диспетчер не завершит свое исполнение или не будет выпущен вскоре после отправки DoSomething(); для выполнения Диспетчер?
lock {}
завершит выполнение.Dispatcher.BeginInvoke
завершит свое выполнение.Dispatcher.BeginInvoke
выполняет асинхронно, это означает, что блокировка будет выпущена почти "немедленно" - DoSomething()
может начаться в тот момент, когда блокировка уже выпущена.
lock
бесполезна, если она не находится внутриdelegate
илиDoSomething
.