На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> Завершение программы
Есть N форм в проекте, при завершении проги все они выгружаются в цикле. Когда завершаю прогу в отладчике, часто бывают моменты что прога не завершается (грузится frmMain). На форме frmPublic стоит таймер 10сек, в котором есть обращение к контролам на frmMain. Допускаю, что выгружается frmMain в цикле, затем срабатывает таймер(загрузка frmMain), затем выгружается frmPublic... Но интевал таймера достаточно велик. Или же проца таймера может выполниться и после выгрузки frmPublic? Просто не знаю уж на что думать...

ExpandedWrap disabled
    Public Sub EndPrg()
    Dim iForm As Form
        For Each iForm In Forms
          Unload iForm
        Next
    End Sub
Цитата BlackSun @
при завершении проги все они выгружаются в цикле.

А порядок выгрузки отфонарный, что ли?
Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
Есть претензии ко мне как к участнику? да ради бога.
Не нравятся мои ответы? не читайте их.
В общем, берегите себя. Нервные клетки не восстанавливаются.
Видно же, что произвольный, зависит от положения в Forms. Вопрос в том, что между выгрузкой форм может ещё что-то выполняться?

Добавлено
И вопрос в том, нужно ли отключать таймеры перед выгрузкой формы (чтобы исключить выполнение кода после выгрузки)?
Сообщение отредактировано: BlackSun -
Цитата BlackSun @
произвольный, зависит от положения в Forms

Что мешает установить определённый порядок выгрузки?
А ещё - если существуют зависимости, то перед выгрузкой очередной формы следует убедиться, что завершился процесс выгрузки предыдущей.

ExpandedWrap disabled
    For i = LBound(strFormName) to UBound(strFormName)
        If IsLoaded(strFormName(i)) Then
            Unload strFormName(i)
        End If
        Do While IsLoaded(strFormName(i))
            DoEvents
        Loop
    Next i



Цитата BlackSun @
между выгрузкой форм может ещё что-то выполняться?

Если что-то запущено - оно будет выполняться.

Цитата BlackSun @
нужно ли отключать таймеры перед выгрузкой формы

Ну вообще-то да... останавливать таймеры и другие асинхронные процессы, закрывать и выгружать используемые ресурсы (соединения, СОМ-объекты и пр.), если это не делается в Form_Unload.
Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
Есть претензии ко мне как к участнику? да ради бога.
Не нравятся мои ответы? не читайте их.
В общем, берегите себя. Нервные клетки не восстанавливаются.
Цитата Akina @
Если что-то запущено - оно будет выполняться.

т.е. выгрузка формы происходит в фоновом режиме?

Ну таймеры-то остановить не проблема, вопрос в том, действительно ли нужно это всегда делать? Просто в инете никогда не видел, чтобы об этом писалось, а значит, проблемы не существует?

Добавлено
Кстати, есть ещё сокеты, может проблема больше в них, чем в таймерах... Придётся закрывать и их.
Сообщение отредактировано: BlackSun -
Цитата BlackSun @
т.е. выгрузка формы происходит в фоновом режиме?

Ну если проанализировать мануал https://msdn.microsoft.com/en-us/library/aa...9(v=vs.60).aspx , то возникает ощущение, что процесс выгрузки асинхронен. Правда, явно об этом не пишут. Да ещё эти хитровывернутые пояснения, что выгружается, а что не очень...
Но самое главное, что любой объект существует в двух ипостасях. Если в проекте есть форма, можно общаться как с ней (абстрактный экземпляр), так и с конкретным загруженным экземпляром класса этой формы. Взаимоотношение их, а также их с приложением, мне так и не стали ясны, потому я лично очень осторожно отношусь ко всем объектам и их компонентам.
Понятно, что время выгрузки и де-инициации таймера на многие порядки превышает установленное время периодического запуска метода... но раз в год и метла стреляет. Так что береги ноги.
Сообщение отредактировано: Akina -
Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
Есть претензии ко мне как к участнику? да ради бога.
Не нравятся мои ответы? не читайте их.
В общем, берегите себя. Нервные клетки не восстанавливаются.
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


Рейтинг@Mail.ru
[ Script Execution time: 0,0980 ]   [ 20 queries used ]   [ Generated: 18.10.17, 16:47 GMT ]