锁定调度程序

时间:2014-05-19 06:55:11

标签: c# wpf

lock
{
  Dispatcher.BeginInvoke(DispatcherPriority.Send, (SendOrPostCallback)delegate(object o)
 {
   DoSomething();
 }
}

是否仍然获取锁直到Dispatcher完成执行或发送DoSomething()后不久发布;执行Dispatcher?

1 个答案:

答案 0 :(得分:2)

  • 锁定仍然被获取,直到lock {}部分下的代码完成其执行。
  • 在您的情况下,这意味着:直到Dispatcher.BeginInvoke完成其执行。
  • Dispatcher.BeginInvoke异步执行时,这意味着锁几乎就会被释放"立即" - DoSomething()可能会在锁已被释放的那一刻开始。