Система.NET. Сеть. Ориентированный на многопотоковое исполнение CookieContainer?

Вы должны взглянуть на различные образцы CorDapps:

  • Вы можете найти официальные образцы в github.com/corda/samples
  • Вы можете найти образцы сообщества в corda.net/develop/samples.html

Они содержат много примеров потоков, которые используют состояния. obligation-cordapp в официальных репо образцов является одним из таких примеров.

11
задан petr k. 28 December 2008 в 19:23
поделиться

4 ответа

Нет, не все классы.NET ориентированы на многопотоковое исполнение. На самом деле у очень немногих есть потребность быть. В целом статические участники должны быть ориентированы на многопотоковое исполнение, но это об этом.

Неизменный / полунеизменные объекты автоматически ориентированы на многопотоковое исполнение (это включает вещи как XslTransform и т.д.) - и существует изменяемое небольшое количество случаи (такие как поточные контейнеры), где можно ожидать вещи быть ориентированными на многопотоковое исполнение. MSDN указывает потокобезопасность для каждого класса.

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

(обновленный)

Ре Ваша вторая точка; точно, о каких переменных Вы думаете? Ваши собственные локальные переменные состояния не будут непосредственно обновлены во время асинхронного запроса, таким образом, он просто упадет на Вас для синхронизации доступа, когда подготовка запросов при обработке ответов. Обычно, через a Monitor - т.е.

lock(syncLock) {
    // prepare request from (synchronized) state
    req.Begin{...}
}

и затем в обратном вызове

lock(syncLock) {
    // ...read values from request...
    // ...update local state...
}

Где syncLock просто объект блокирования (возможно, запомнил экземпляр):

private readonly object syncLock = new object();
6
ответ дан 3 December 2019 в 07:39
поделиться

Из первых уст:

Потокобезопасность

Любые общедоступные помехи (Совместно использованный в Visual Basic) члены этого типа ориентированы на многопотоковое исполнение. Любые члены экземпляра, как гарантируют, не будут ориентированы на многопотоковое исполнение.

Править:

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

5
ответ дан 3 December 2019 в 07:39
поделиться

Просто примечание, веб-страница отправляет modifed список cookie, как отвечает часть его HTTP. При изменении CookieContainer после того, как ответ был, отправляют, ничего не выполнит - Вы просто измените набор cookie запроса страницы, который больше не существует.

2
ответ дан 3 December 2019 в 07:39
поделиться

Все статические классы в платформе.NET, как гарантирует Microsoft, будут ориентированы на многопотоковое исполнение.

Можно проверить это при помощи Отражателя.

0
ответ дан 3 December 2019 в 07:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: