У меня есть служба WCF, и она регистрирует каждый вызов в базе данных. Позже, если возникает исключение, оно также регистрируется в отдельной базе данных.Что такое контекст потока в C#?
Мне нужен способ связать оба этих журнала вместе, чтобы мы могли видеть, что могло вызвать исключение. Для этого мне нужен какой-то уникальный идентификатор, который я мог бы получить для каждого звонка.
Поскольку все это выполняется в одном потоке, я мог бы, например, задать имя потока для GUID, например. System.Threading.Thread.CurrentThread.Name = Guid.NewGuid().ToString();
, но это немного хаки.
Поиск по сети, я обнаружил System.Threading.Thread.CurrentContext.SetProperty()
, но мне интересно, что это за контекст. Он предназначен для хранения свойств в течение всего потока? Это уникально для каждой нити?
Если у меня есть 5 одновременных вызовов WCF, я не хочу, чтобы между конфликтами между ними происходило конфликты, если это не так, как говорится.
Может ли кто-нибудь уточнить?
Ой интересно, спасибо! – NibblyPig
В качестве обновления, если вы используете .NET 4.6, вам следует переключиться с использования 'ThreadLocal' на [' AsyncLocal'] (https://msdn.microsoft.com/en-us/library/dn906268 (v = vs.110) .aspx), это позволяет вашему хранилищу перетекать через границу async/wait, где вы можете в конечном итоге перепрыгнуть потоки. –