委托上的BeginInvoke和EndInvoke都会生成完整的围栏吗?

时间:2011-07-20 09:10:41

标签: c# .net multithreading

Threading in C# by Joseph Albahari简要介绍一下,说明:

以下隐式生成完整围栏:

  • C#的锁定语句(Monitor.Enter / Monitor.Exit)
  • Interlocked类的所有方法(我们很快将介绍这些)
  • 使用线程池的异步回调 - 包括 异步委托,APM回调和任务延续
  • 设置和等待信令构造
  • 依赖于信令的任何内容,例如启动或等待任务

由于“异步委托”在列表中,我假设至少EndInvoke是完全屏蔽的。但是BeginInvoke怎么样?不幸的是我无法将F11(=调试步骤)放入BeginInvoke代码中 - 是否可以在某处获得源代码?虽然一个明确答案的链接会更好。

2 个答案:

答案 0 :(得分:-1)

MSDN说BeginInvoke是线程安全的:http://msdn.microsoft.com/en-us/library/0b1bf3y3.aspx

  

控件上有四个线程安全的方法:Invoke,   如果是句柄,则为BeginInvoke,EndInvoke和CreateGraphics   控件已经创建

答案 1 :(得分:-1)

整个框架的源代码可从Microsoft Reference Source Website

获得