[英]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.