这是一个非常基本的问题,我想它是,但我找不到任何明确的答案。是SynchronizationContext.Post()
线程安全吗?SynchronizationContext.Post()线程安全吗?
我有一个成员变量,它包含主线程的上下文,而_context.Post()
被从多个线程中调用。我想Post()
可以在对象上同时调用。我是否应该像
lock (_contextLock) _context.Post(myDelegate, myEventArgs);
或者那是不必要的?
编辑:“任何实例成员不能保证线程安全”
MSDN指出,如果我把我的lock()
,然后呢?
看着反汇编的代码,这个方法只是调用ThreadPool.QueueUserWorkItem,根据msdn,IS线程安全。 – 2010-05-18 19:58:45
@菲尔:这并不奇怪。不幸的是,微软已经有效地保留了在未来版本或者服务包中以一种可以使其当前的线程安全行为无效的方式来改变实现的权利。我的猜测是他们真的打算让这个类拥有线程安全的实例方法,并且他们只是搞砸了文档。但是,这又是一个假设。 – 2010-05-18 20:07:28
考虑到它的用法,将它变成无法线程安全的将是愚蠢的! – RichardOD 2010-06-13 11:35:59