2011-02-28 26 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與存儲值進行比較?如果他們不同,拋出異常。