Использование статического AsyncLocal для «AsyncFlowId»C#

Место общения программистов C#
Ответить
Anonymous
 Использование статического AsyncLocal для «AsyncFlowId»

Сообщение Anonymous »

Мы пытаемся использовать базовый AsyncLocal для хранения «AsyncFlowId» для простого отслеживания запросов. Я знаю, я знаю: статические классы — это плохо, внедрение зависимостей — это хорошо. Несмотря на это, мы стремимся сделать это именно так. Что мне не ясно, так это то, является ли это потокобезопасным без блокировки или нет. Магия AsyncLocal усложняет размышления.
У нас есть такой код:

Код: Выделить всё

public static RuntimeContext
{
private static AsyncLocal _asyncFlowId = new AsyncLocal();
public static Guid AsyncFlowId => _asyncFlowId ??= Guid.NewGuid(); //This doesn't seem thread-safe, but I'm not certain given the AsyncLocal.
}
Кажется, это хорошее место для использования Lazy, но я не вижу подходящего способа разместить его здесь. Возможно, я упускаю что-то очевидное.


Подробнее здесь: https://stackoverflow.com/questions/791 ... syncflowid
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»