2011-12-13 2 views
1

У меня есть приложение Windows Forms C#, которое отлично работает на большинстве машин. Но некоторые машины при закрытии дочерних форм (а не приложение MDI) все приложение зависает в течение нескольких секунд, пока окно не будет закрыто. Это происходит только при нажатии кнопки «X» в верхнем правом углу. Если у меня есть кнопка в форме, которая просто вызывает this.Close();, окно закрывается нормально. У меня около 20 машин, на которых это работает, но я видел 2 до сих пор, что эта проблема возникает (одна из них - Windows 7, а другая - XP). Если я запустил код из Visual Studio на этих машинах, окна закрываются нормально. Это происходит только при запуске из EXE. При закрытии основной формы приложения не висит. Только ребенок образует. Я просто используюФорма зависает при закрытии, минимизации или максимизации

Form1 f = new Form1(); 
f.Show(); 

, чтобы открыть окно. Я пробовал это на пустых тестовых формах в том же приложении, у которых нет кода, и то же самое происходит. В других приложениях Windows Forms на тех же машинах эта проблема не возникает. В этом приложении есть что-то конкретное, но я не могу сузить его. Я знаю, что это трудный вопрос для ответа, не видя всей базы кода, но кто-то еще сталкивался с подобной проблемой в прошлом? Спасибо.

EDIT: Некоторые дополнительные замечания

свернуть, развернуть и восстановить кнопки вызвать тот же повесить, когда любой из них щелкнули.

Интересно, что если вы нажмете на значок окна в верхнем левом углу и выберите «Закрыть», «Свернуть» или «Развернуть все», все будет работать нормально, без задержки или зависания.

+0

Вызов 'Show' только устанавливает' Visible' в 'true'. Оба нажатия кнопки «X» и вызов «Закрыть» вызывает событие «Закрытие» - здесь нет разницы. Вы пытались взломать простое приложение с основной формой, несколькими дочерними формами и кнопкой Закрыть в основной форме? – kol

ответ

0

Убедитесь, что на Вашем случае форма закрытия поместить

Application.Exit(); //use to stop application processes 

Go на вашем менеджере задач и и перейдите на вкладку процессы и проверить, если ваше приложение вызывает большое количество ресурсов процессора. Возможно, все еще есть экземпляр вашего приложения, которое все еще работает.

С уважением

Смежные вопросы