我写了一个特殊的数据结构,将在.NET库中可用,并且此数据结构的功能之一是将是线程安全的,前提是只有一个线程向其写入数据,并且只有一个线程读取来自它的数据(读者线程和写入器线程可以不同)。如何在.NET中检测交叉线程访问(强制执行线程关联)?
问题是我该如何强制所有的读操作都是由同一个线程执行的?
我的解决方案是捕获System.Threading.Thread.ManagedThreadID,并在第一次读取时将其存储在私有成员中。然后,在随后的读取中检查ManagedThreadID是否与保存的一致,以及它们是否与抛出异常不同。
这是否足够,或者是否有不同的更可靠的机制来做到这一点。
注:有这个库是没有Windows.Forms的背景下使用的要求..
我不想依靠的读/写方法调用者什么提供作为输入。否则,如果我可以可靠地使用ManagedThreadID方法,我想我会使用它。谢谢。 – 2009-05-28 17:46:14