簡體   English   中英

C#中的線程上下文究竟是什么?

[英]What exactly is the thread context in C#?

我有一個WCF服務,它記錄每次調用數據庫。 稍后,如果發生異常,它也會記錄到單獨的數據庫中。

我想要一種方法將這兩個日志綁定在一起,這樣我們就可以看到可能導致異常的原因。 要做到這一點,我想要一些我可以為每次通話獲得的唯一ID。

由於整個事情在單個線程上執行,我可以例如將線程名稱設置為GUID,例如。 System.Threading.Thread.CurrentThread.Name = Guid.NewGuid().ToString(); 但這有點笨拙。

在網上搜索,我發現了System.Threading.Thread.CurrentContext.SetProperty()但我想知道那個上下文到底是什么。 它是否設計用於存儲線程持續時間的屬性? 每個線程都是唯一的嗎?

如果我同時有5個WCF呼叫,我不希望在上下文中發生什么沖突,如果它不是“每次呼叫”可以這么說。

有人可以澄清嗎?

我不會使用該屬性,因為微軟稱它僅供內部使用:

"This API supports the .NET Framework infrastructure and is not intended to be used directly from your code."

但是,您應該能夠使用Thread Local Storage來執行相同類型的操作。 該鏈接給出了一個示例,說明如何為線程設置字符串屬性。

另見http://www.c-sharpcorner.com/UploadFile/1d42da/working-with-thread-local-storagetls-in-C-Sharp/

暫無
暫無

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

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