Я бы использовал шаблон Singleton для хранения вашей переменной приложения. Он статичен, будет выделен после первого использования и доступен на весь срок службы вашего приложения. Я также думаю, что это намного лучше, чем использовать нетипизированное приложение типа HashTable. Для меня хранилище приложений является пережитком ASP и больше не используется в объектно-ориентированном мире.
Будьте осторожны, статическая переменная инициализируется только один раз, потому что каждый веб-запрос / вызов службы выполняется в своем собственном потоке.
Таким образом, вы можете загрузить данные при первом использовании и получить к ним доступ из любого места с помощью MyData.Data:
.
public class MyData
{
private static IList<MyData> _data { get; set; }
public static IList<MyData> Data
{
get
{
if (_data == null)
_data = load Big data struct from DB.
return _data;
}
}
}
Событие лучше было бы инициализировать в статическом конструкторе, потому что тогда вызов был бы потокобезопасным.