Я просто обескуражен вашим стилем программирования. Кто ж так пишет?
Открытие потока в одном классе, закрытие - в другом.
Ничего удивительного что у Вас.теряются данные.
Запомните раз и навсегда:
все логически связанные действия делаются в одном программном модуле.