簡體   English   中英

如果調用線程不是創建對象的線程,則拋出異常

[英]Throw exception if calling thread is not the thread that created the object

我想創建自定義類的實例。 例如,我有兩個線程T1T2 如果我從T1創建實例,那么從T2對該實例的任何訪問都應引發異常。 就像在WinForms中一樣,當我嘗試從不是UI線程的線程進行訪問控制時。

如何實現呢? 我應該存儲對current thread引用還是應該保留current thread某些unique ID (如果該ID存在)。 我應該使用哪種機制?

基本上,它將是一個單例,它從給定的種子生成隨機數。 我想阻止其他線程訪問此單例,因為我需要使用相同的種子再次運行我的應用程序以重現我的方案。 如果我不允許在其他線程中使用該類,那么將無法進行復制,因為線程以不可預測的順序啟動/停止/執行操作。

我認為您可以為此目的使用Thread.CurrentThread.ManagedThreadId

但是請注意,這些ID可能會在某些時候重新使用,因此它們在應用程序的整個生命周期中可能並不是唯一的。 但是,考慮到您描述的情況,我認為這不應該成為問題。

另外,您還需要注意,取決於使用方式和位置,您的“后衛”可能無法很好地與異步編碼配合使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM