Нет библиотеки для многопоточности, о которой я знаю.Но асинхронная обработка не обязательно требует потоков.У Desaware есть StateCoder , библиотека для конечных автоматов, которая помогает с многозадачностью без многопоточности.Немного похоже на Aysnc CTP.
В качестве альтернативы здесь представлена довольно стандартная схема для асинхронной фоновой обработки в VB6.(Например, он находится в книге Дэна Эпплмана и VB6 семплов Microsoft .) Вы создаете отдельный EXE-файл ActiveX для выполнения работы: таким образом, работа автоматически выполняется в другом потоке, в отдельномпроцесс (что означает, что вам не нужно беспокоиться о растоптанных переменных).
- Объект VB6 ActiveX EXE должен предоставлять событие CheckQuitDoStuff ().Для этого используется логическое значение ByRef Quit.
- Клиент вызывает StartDoStuff в объекте ActiveX EXE.Эта процедура запускает таймер в скрытой форме и немедленно возвращает .Это разблокирует вызывающий поток.Интервал таймера очень короткий, поэтому событие таймера срабатывает быстро.
- Обработчик событий Timer отключает Timer, а затем вызывает метод ActiveStuff объекта ActiveX.Это начинает длительную обработку.
- Периодически метод DoStuff вызывает событие CheckQuitDoStuff.Обработчик событий клиента проверяет специальный флаг и устанавливает Quit True, если необходимо прервать операцию.Затем DoStuff прерывает вычисление и возвращает рано, если Quit имеет значение True.
Эта схема означает, что клиент на самом деле не должен быть многопоточным, поскольку вызывающий поток не блокируется, пока происходит DoStuff.Сложная задача - убедиться, что DoStuff вызывает события через соответствующие промежутки времени - слишком долго, и вы не можете выйти, когда хотите: слишком коротко, и вы без необходимости замедляете DoStuff.Кроме того, когда DoStuff завершает работу, он должен выгружать скрытую форму.
Если DoStuff действительно удается выполнить всю работу до того, как ее прервать, вы можете вызвать другое событие, чтобы сообщить клиенту о завершении задания.
Отказ от ответственности: прямая копия моего ответа на другой вопрос