Как может быть что-то вроде ThreadStatic
в задаче TPL? Мое понимание ( "Wrox Professional Parallel Programming with С#", стр. 74) заключается в том, что Task может переключаться с одного потока на другой во время выполнения.
Что я хочу делать?
Я хочу поддерживать идентификатор сеанса внутри статического класса, поэтому мне не нужно передавать этот идентификатор ко всем моим методам. Моя библиотека имеет методы типа login(id)
, logout(id)
и многие методы, которые работают с учетными данными, связанными с этим идентификатором. Но я не хочу передавать этот идентификатор каждому методу. Я могу убедиться, что моя библиотека вызывается в другом потоке для разных сеансов. Таким образом, сохранение id внутри login()
в переменной ThreadStatic
будет работать.
Теперь я хочу использовать TPL Tasks, созданные для меня ThreadPool
. Я могу передать свой идентификатор сеанса в Задачу, но если я сохраню этот идентификатор внутри переменной ThreadStatic
, он не сохранится, если моя задача переключит потоки.