Вы должны взглянуть на различные образцы CorDapps:
Они содержат много примеров потоков, которые используют состояния. obligation-cordapp
в официальных репо образцов является одним из таких примеров.
Нет, не все классы.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();
Потокобезопасность
Любые общедоступные помехи (Совместно использованный в Visual Basic) члены этого типа ориентированы на многопотоковое исполнение. Любые члены экземпляра, как гарантируют, не будут ориентированы на многопотоковое исполнение.
Править:
Вы могли поместить блокировку вокруг действий, которые изменяют членов экземпляра.
Просто примечание, веб-страница отправляет modifed список cookie, как отвечает часть его HTTP. При изменении CookieContainer после того, как ответ был, отправляют, ничего не выполнит - Вы просто измените набор cookie запроса страницы, который больше не существует.
Все статические классы в платформе.NET, как гарантирует Microsoft, будут ориентированы на многопотоковое исполнение.
Можно проверить это при помощи Отражателя.