У меня есть экземпляр класса, к которому могут обращаться несколько потоков.
Внутри этого класса находится переменная [ThreadStatic]
, в которой хранятся различные объекты.
Теперь мне нужен второй экземплярмоего класса, и я хочу, чтобы в нем было отдельное хранилище объектов.
В настоящее время два экземпляра в одном потоке будут совместно использовать одно и то же хранилище объектов.Я не хочу этого.
Единственное решение, о котором я могу подумать, это:
Имеет статический IDictionary<int, TObjectStore>
, где int
- идентификатор потока, и доступ к нему с помощью какого-либо метода илиgetter:
static TObjectStore ObjectStore {
get {
// create the instance here if its the first-access from this thread, with locking etc. for safety
return objectStore[Thread.CurrentThread.Id];
}
}
Однако проблема в том, как избавиться от TObjectStore
для определенного потока, когда он заканчивается?Я думаю, что я прав, предполагая, что с моей текущей реализацией GC просто поднимет ее?
Спасибо