2011-02-28 67 views
0

如果我想创建一个类(仅用于测试和理解目的),它应该像控件一样行为,每当我尝试执行跨线程访问时,我都应该能够抛出异常。我如何在.NET C#中实现。 (不从控制类派生,相似性以相对于跨线程访问结束)与我的自定义类的Control.Invoke类似

例如,我有一个Employee类,当有人从创建的线程以外访问该对象时,我需要表现得像控制和抛出一个例外?请帮助

+0

如何从'System.ComponentModel.Component'继承?为什么你需要为跨线程访问抛出异常?获得免费Control.Invoke功能的唯一方法是从实现它的类继承。 – 2011-02-28 10:07:44

+0

纯粹是为了学习的目的。或者如何通过mysefl实现调用函数?这样我可以在特定的上下文中执行,正如呼叫者所要求的那样! – NSN 2011-02-28 10:10:04

+2

它非常相似吗? [检测交叉线程操作](http://stackoverflow.com/questions/922219/how-to-detect-cross-thread-access-in-net-enforce-thread-affinity) – 2011-02-28 19:33:02

回答

0

您可以将Thread.CurrentThread.ManagedThreadId的值保存在构造函数中,然后将调用函数时的线程ID与存储值进行比较?如果他们不同,抛出异常。