2012-02-02 2 views
1

У меня есть решение в Visual Studio 2010 C#, которое использует таймер и отправляет пользователю сообщение с каждым тиком с указанием времени (я не понимаю, почему я сделал это только тестирование, я думаю). Проблема в том, что я не могу найти способ остановить программу ... Я просто продолжаю получать окно сообщений каждый раз. Я использовал taskmanager, чтобы убить процесс, но как только я открою решение, появятся окна сообщений. Независимо от того, что я пробовал, я не могу остановить выполнение программы. Это ноутбук, и я пробовал ctl-break ctl-fn-break. Ничто не работает. Если у кого-то есть предложение по этому вопросу, я был бы признателен. Должен быть способ остановить программу. Благодарю.Я не могу вырваться из решения C#.

+1

Отладка -> Остановка отладки? – roken

+0

Когда вы использовали диспетчер задач, процесс исчез? –

+0

Я построил решение. В решении есть пользовательский элемент управления с таймером, который запускает сообщение времени каждую секунду. Когда я убиваю процесс с помощью taskmanager, он заканчивается, но как только я открываю решение, окно сообщения начинает стрелять. Я думаю, что это потому, что пользовательский контроль является независимым, и я не могу его остановить. Похоже, мне нужно будет построить новый проект. –

ответ

2

Я полагаю, что когда Visual Studio открывает решение, он сразу же открывает конструктор форм и визуализирует оскорбительную форму, а значит, бесконечное окно сообщений.

Редактируйте файл класса с кодом окна сообщения в блокноте (я считаю, что разработчик динамически компилирует файлы в фоновом режиме во время работы). Удалите все сборки, связанные с решением, находящимся на безопасной стороне. Если это не сработает, скопируйте код формы в текстовый файл и удалите и заново создайте.

+0

Если это действительно происходит от дизайнера, мне бы очень хотелось увидеть код. – roken

+0

@roken - дизайнер выполнит все, что может, для веб-форм или окон. Один из моих разработчиков столкнулся с этой проблемой недавно, когда бесконечный цикл в пользовательском элементе управления разбивал VS каждый раз, когда он запускался. Это одна из причин, по которой свойство 'DesignMode' существует, поэтому вы можете условно опустить вещи, которые не должны выполняться в дизайнере. –

+0

Ах, да, я полагаю. Обратите внимание, что использование DesignMode в UserControl для подавления включения таймера было бы недостаточным, потому что DesignMode имеет значение только тогда, когда этот элемент управления разрабатывается. Если вы отмените usercontrol на From, DesignMode не поможет вам при разработке формы. – roken

1

Вам нужно изменить свой код, который запускает таймер, и обернуть его. Но вам нужно будет открыть файл .cs.

if(!this.DesignMode) 
{ 
    //enter timer code here 
} 
Смежные вопросы