Могу ли я (безопасно) использовать атрибут ThreadStatic в ADO.NET Data Services? - PullRequest
3 голосов
/ 18 ноября 2009

Я хочу хранить данные для каждого потока в службе данных ADO.NET. Безопасно ли использовать атрибут ThreadStatic в моей статической переменной, относящейся к потоку, или у меня возникнут проблемы? Меня беспокоит то, что моя переменная (и) ThreadStatic не будет собираться мусором после того, как запрос будет завершен и поток умирает

Если есть лучший способ сделать то, что я пытаюсь сделать, пожалуйста, дайте мне знать. Это кажется самым простым решением.

Любая информация была бы очень полезна, спасибо!

Ответы [ 2 ]

3 голосов
/ 23 ноября 2009

Я обнаружил, что объект DataService, который создается для каждого запроса, находится в потоке, помеченном IsThreadPoolThread = true, поэтому использование атрибута [ThreadStatic] в этом случае не подходит, так как информация из предыдущих запросов может быть доступна позже. из них (не желательно).

0 голосов
/ 18 ноября 2009

Любые переменные, помеченные ThreadStatic, будут иметь время жизни по крайней мере столько же, сколько поток, в котором они созданы. После того, как поток завершается, они подвергаются сборке мусора, как и любое другое значение.

...