C#中的线程上下文到底是什么

本文关键字:是什么 上下文 线程 | 更新日期: 2023-09-27 18:16:53

我有一个WCF服务,它记录对数据库的每次调用。稍后,如果发生异常,也会将其记录到一个单独的数据库中。

我想要一种方法将这两个日志连接在一起,这样我们就可以看到是什么导致了异常。为了做到这一点,我想要一个唯一的ID,我可以为每个电话获得。

由于整个过程都是在一个线程上执行的,例如,我可以将线程名称设置为GUID,例如System.Threading.Thread.CurrentThread.Name = Guid.NewGuid().ToString();,但这有点麻烦。

在网上搜索,我发现了System.Threading.Thread.CurrentContext.SetProperty(),但我想知道这个上下文到底是什么。它是为在线程的持续时间内存储属性而设计的吗?它是每个线程唯一的吗?

如果我同时有5个WCF调用,我不希望上下文中的内容之间有任何冲突,如果不是"每次调用"。

有人能澄清一下吗?

C#中的线程上下文到底是什么

我不会使用这个属性,因为微软说它只供内部使用:

"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/