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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2018, 17:23   #1
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию Повредился файл исходного кода

Здравствуйте.
Вот я уже второй день пишу программу для работы, и по большому счёту - программа уже почти готова.
Тут произошла интересная ситуация: я решил добавить функционал, который не позволит запускать дубликаты этой программы (не обязательно, но желательно).
В процессе тестирования я словил BSoD. А я всего то из конструктора полез убивать такие же процессы. Но после первой синьки вроде ничего не произошло, проект запустил и погнал выпиливать предполагаемый баг.
Запустил программу - и опять синька. Ну то ладно, то что я быдло-говно-кодер - это и так всем известно. Речь не об этом.
После второй синьки я попытался открыть проект, и вместо своего кода увидел попытки среды открыть файл в блокноте. В самой среде он открываться не захотел.
Открыл файл с кодом в блокноте - и увидел 10 килобайт символов null (notepad++).

За сам код я переживал не долго, поднял ILSpy, восстановил.

Вопрос такой: что конкретно я сделал не так в коде ?
Разве из конструктора (формы) нельзя убивать процессы ?
И как это повлияло на файл исходника ?
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 30.01.2018, 17:51   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А что в бсоде-то?

https://www.nirsoft.net/utils/blue_s...#DownloadLinks
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 30.01.2018, 18:17   #3
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А что в бсоде-то?
У меня как то не было времени смотреть, что произошло ... Увидел только то, что дамп памяти занимал какое то время.
Я так понял, что во второй раз код повредился из-за того, что я стартовал отладку под средой разработки.
Сейчас подниму виртуаль, посмотрю, что там будет происходить.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 30.01.2018, 18:22   #4
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Во !
Изображения
Тип файла: png BSoD.png (19.4 Кб, 92 просмотров)
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 30.01.2018, 18:22   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Причем тут время? Дамп он на то и создается.
Выше ж ссылка на программу для просмотра данных бсода.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 30.01.2018, 18:27   #6
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Код, без которого всё нормально:
Код:
Process[] processes = Process.GetProcesses();
Process currentProcess = Process.GetCurrentProcess();
for (int i = 0; i < processes.Length; i++)
{
	if (processes[i].StartInfo.FileName == currentProcess.StartInfo.FileName && processes[i].Id != currentProcess.Id)
		processes[i].Kill();
	processes[i].Dispose();
}
currentProcess.Dispose();
Выполняется в конструкторе формы.
Я подумал было дело в Dispose(), пока перепроверить не успеваю ... Но я раньше так делал преспокойно, где угодно - и всё работало исправно.
Типа Dispose() убивает объект, а не процесс.

UPD: StartInfo.FileName пустой (ниже обратили внимание), нужно юзать MainModule.FileName.
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 31.01.2018 в 16:46.
OmegaBerkut вне форума Ответить с цитированием
Старый 30.01.2018, 18:36   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Чувак, ты изобрёл функцию, вызывающую BSOD? Да ты же гений!
Перепиши на С++, с меня пиво!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 30.01.2018, 18:54   #8
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Чувак, ты изобрёл функцию, вызывающую BSOD? Да ты же гений!
Перепиши на С++, с меня пиво!
Я так подозреваю, что это сарказм.
Если серьёзно - что тут не так ?
Можете у себя проверить, у вас такая же дичь ?
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 30.01.2018, 19:02   #9
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
Можете у себя проверить, у вас такая же дичь ?
Я так подозреваю, что это сарказм.
Цитата:
из конструктора полез убивать такие же процессы
И это.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 30.01.2018, 19:34   #10
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

Тогда уж currentProcess убивать, а то это не запрет запуска второй копии, а попытка убить первую, только StartInfo зачем? - Там пусто, в итоге не более чем все процессы умирают.
И вообще, зачем убивать детей? Может проще не дать им родиться используя, например, презерватив или обёртки
eoln вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан файл вещественных чисел. Создать файл целых чисел, содержащий длины всех убывающих последовательностей элементов исходного файла. Например, для исходного файла с элементами 1.7 faza9444 C# (си шарп) 1 27.11.2017 22:23
Компиляция исходного кода vitekrock Общие вопросы по Java, Java SE, Kotlin 5 05.12.2010 21:24
Из исходного кода в Cookies x852x Общие вопросы Delphi 0 21.03.2010 13:09
Анализ исходного кода heart Безопасность, Шифрование 7 31.12.2009 08:26
Анализ исходного кода SwitchMan Паскаль, Turbo Pascal, PascalABC.NET 1 25.04.2009 18:14