Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2010, 09:11   #41
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

Код:
BinaryFormatter formatter = new BinaryFormatter();
Stream stream = File.Create(Application.StartupPath +"\\"+ "List.bin");
formatter.Serialize(stream, list);
stream.Close();

http://www.rte1.ru/sovety/chto/cSharp/cs_using.html
Life if about choices
Make the right choice

Последний раз редактировалось TaTT DoGG; 17.03.2010 в 09:13.
TaTT DoGG вне форума Ответить с цитированием
Старый 17.03.2010, 20:17   #42
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Сейчас переписал просто уйму кода, чтобы не создавалось на каждом шагу куча экземпляров будильников, я аж подустал . Вот так можно заполнять List<AlarmClock> и всё работает:
Код:
        private void SaveListAlarmClock(ListView listViewAlarm)
        {
            List<AlarmClock> list = new List<AlarmClock>();
            list.Clear();

            foreach (ListViewItem item in listViewAlarm.Items)
            {
                list.Add((AlarmClock)item.Tag);
            }

            IFormatter formatter = new BinaryFormatter();
            Stream stream = new FileStream(Application.StartupPath + "\\" + "List.bin", FileMode.Create, FileAccess.Write, FileShare.None);
            formatter.Serialize(stream, list);
            stream.Close();
        }
А то раньше при сохранении создавались копии будильников которые сохраняются и их становилось в 2 раза больше. Щас всё работает норм. Я просто в деструкторе будильника вставил статическую переменную, которая показывает сколько будильников всего в памяти, так вот теперь и отлаживать легче и при уничтожении показывается сообщение, что ещё один экземпляр уничтожен. Вот деструктор:
Код:
        ~AlarmClock() //деструктор
        {
            quantityAlarms--; //уменьшить на 1
            MessageBox.Show("Был удалён один будильник");
        }
Вообще в C# есть такое понятие как передача по ссылке, то есть я один экземпляр передаю по ссылке не создавая новый, как в случае с
Код:
list.Add((AlarmClock)item.Tag);
я физически не создаю новый экземпляр, а привязываю к элементу списка List уже существующий экземпляр будильника и теперь на один и тот же экземпляр ссылается list[0] и listViewAlarm.Items[0].Tag
Насколько я помню, если сделать list[0] = null и listViewAlarm.Items[0].Tag = null, то экземпляр класса на который ничто не ссылается уничтожается системой сборки мусора.

Последний раз редактировалось Casper-SC; 17.03.2010 в 21:19.
Casper-SC вне форума Ответить с цитированием
Старый 21.03.2010, 09:27   #43
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Появилась опять проблема. Я в своём классе использую таймер. Ну чтобы каждый экземпляр будильника проверял себя сам на срабатывание. Теперь не работает BinnaryFormater. Вот ошибка:
Цитата:
Тип "System.Windows.Forms.Timer" в сборке "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" не помечен как сериализуемый.
Объясните пожалуйста кто нибудь, что вообще за беда с этими сериализациями? Что можно сериализовать, класс содержащий только данные? Таймер нельзя, чтоли использовать?
Casper-SC вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создать двумерный массив, заполнить случайными числами, сохранить в файл buba Паскаль, Turbo Pascal, PascalABC.NET 7 17.03.2015 20:08
Передать массив базового абстрактного класса функциям производных классов mishutka999 Общие вопросы C/C++ 2 01.12.2009 14:08
запись классов в бинарный файл Feannewedd Общие вопросы C/C++ 6 29.06.2009 10:11
Массив классов nns2009 Общие вопросы C/C++ 15 03.02.2009 00:47