| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > как НЕ читать дважды данные из файла? |
| Автор: Экскалупатор 19.9.2009, 11:10 |
| Есть такая ситуация, у меня есть две формы, и эти обе формы должны работать с одними и теми же данными, хранящимися в файле XML. у меня есть класс который читает эти данные, и получается что мне нужно в каждой форме сделать экземпляр класса, читающего нужные мне данные, получается что выполняется ненужная работа. подскажите как этого избежать. у меня есть предположение, что нужно сделать класс хранящий результаты чтения XML файла, и кидать потом этот класс между формами. но может есть какой то иной способ? меня именно логика этого процесса интересует. заранее всем спасибо. |
| Автор: Akina 19.9.2009, 11:34 |
А вот это-то зачем? сделай класс на уровне приложения и грузи его на старте. А обе формы пусть обращаются к этому одному экземпляру, уже загруженному на старте. А проверить, есть в памяти нужные данные или их надо подчитать с диска - это уже сабота самогО класса. |
| Автор: Skynin 19.9.2009, 18:47 |
| Общие рассуждения: 1. Операционная система вполне хорошо кеширует операции чтения-записи файлов. Поэтому чем ближе повторное чтение, тем вероятней что файл еще в памяти. Если на общую скорость выполнения "чтение" и инициализация на основе этих данных каких-либо объектов - влияние мизерное - то и незачем усложнять код, читай повторно. 2. Если файл большой (вряд ли ОСь будет держать его в памяти после первого чтения) или парсинг файла долгий - можно кешировать результаты первого парсинга самому. 3. Если результаты парсинга нужны только при начале работы системы и/или занимают много места, то имеет смысл при первом парсинге запомнить уже проинициализированный объект, а потом его(или на его основе) клонировать. |