委托上的BeginInvoke和EndInvoke都生成完整的篱笆
本文关键字:EndInvoke BeginInvoke | 更新日期: 2023-09-27 18:03:06
c#中的线程,由Joseph Albahari简要介绍,他说:
下面隐式地生成全围栏:
- c#的锁语句(Monitor.Enter/Monitor.Exit)
- Interlocked类上的所有方法(我们将很快讨论这些) 使用线程池的异步回调函数包括异步委托、APM回调和任务延续
- 设置和等待信令构造
- 任何依赖于信号的操作,例如启动或等待任务
由于"异步委托"在列表中,我假设至少EndInvoke是完全隔离的。那么BeginInvoke呢?不幸的是,我不能F11(=调试步骤)进入BeginInvoke代码-源代码是可用的地方吗?不过如果能有一个明确答案的链接就更好了
MSDN说BeginInvoke是线程安全的:http://msdn.microsoft.com/en-us/library/0b1bf3y3.aspx
控件上有四种方法是线程安全的:方法的句柄是BeginInvoke, EndInvoke和CreateGraphics控件已经创建
整个框架的源代码可从Microsoft的参考源网站获得