Как включить собственные данные в ExecutionContext - PullRequest
9 голосов
/ 11 мая 2009

Я знаю, что когда вы запускаете какой-то метод параллельно, вызывая BeginInvoke () или ThreadPool.QueueUserWorkItem (...) .NET Framework захватывает объект ExecutionContext, который содержит информацию о безопасности доступа к коду и некоторые другие вещи.

Что я хочу, так это включить в ExecutionContext некоторые данные, которые необходимы моему параллельному методу, но которые также должны быть получены в момент постановки задачи в очередь.

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

Есть ли способ передать какое-то состояние параллельной задаче, когда я не всегда контролирую код, разделяющий работу между потоками.

Ответы [ 2 ]

11 голосов
/ 11 мая 2009

Нашли:

CallContext.LogicalSetData(...)

( Документация )

и

CallContext.LogicalGetData(...)

( Документация )

0 голосов
/ 11 мая 2009

Я не знаю, как это относится к ExecutionContext, но в свое время мы могли создавать объекты, связанные с контекстом. См. Контекстный класс . Не обращайте внимания на тот факт, что этот конкретный класс предназначен для инфраструктуры - статья является отправной точкой для изучения контекстов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...