Многопоточность в Visual Basic 6.0 - PullRequest
       34

Многопоточность в Visual Basic 6.0

15 голосов
/ 21 сентября 2008

Как реализовать многопоточность в Visual Basic 6.0. Было бы здорово, если бы кто-то мог привести пример.

Ответы [ 4 ]

14 голосов
/ 21 сентября 2008

VB6 не очень хорошая среда для многопоточных приложений. Нет встроенной поддержки, вам нужно углубиться в стандартные функции WinAPI . Взгляните на эту статью, в которой представлен довольно полный пример:

http://www.freevbcode.com/ShowCode.Asp?ID=1287

9 голосов
/ 21 сентября 2008

В нескольких проектах я реализовал асинхронную обработку в VB6, используя несколько процессов. По сути, наличие рабочего потока в активном exe-проекте, отдельном от основного процесса. Затем исполняемый файл работника может быть передан любым необходимым данным и запущен, вызывая событие, сообщающее, что оно завершено или имеются данные для основного процесса.

Это более ресурсоемкий (дополнительный процесс, а не поток), но VB6 работает в однопоточной квартире и не имеет встроенной поддержки запуска новых потоков.

Если вам действительно нужно иметь несколько потоков в одном процессе, я бы посоветовал использовать .net или VC6, а не VB6.

2 голосов
/ 20 октября 2008

Если проблема, которую вы пытаетесь решить, состоит в длинных вычислениях и вы хотите, чтобы пользовательский интерфейс реагировал, то одна из возможностей - часто вызывать функцию DoEvents в ваших длинных вычислениях. Таким образом, ваша программа может обрабатывать любые сообщения Windows, и, таким образом, пользовательский интерфейс будет реагировать на пользовательские команды. Вы также можете настроить кнопку Отмена, чтобы сообщить вашему процессу о том, что он должен завершиться.

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

0 голосов
/ 23 января 2013

Вы можете использовать Interop Forms Toolkit 2.0 для многопоточности в VB6. Инструментарий позволяет использовать возможности .NET без необходимости обновления. Таким образом, вы также можете использовать пользовательские элементы управления .NET в качестве элементов управления ActiveX в VB6.

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