Я отправил это как ответ на другой вопрос, но модель применима и здесь:
VB6, сама по себе, однопоточный. Тем не менее, вы можете сделать его несколько многопоточным с помощью ActiveX EXE, которые запускаются в их собственном процессе, но все же привязаны к исходному VB6-созданному EXE.
То, что я использовал в прошлом, является объектом Timer в сочетании с ActiveX EXE. Такой подход даст вам возможность локализовать всю логику загрузки в одном месте, управлять им, как если бы вы управляли обычным объектом, и запускать его в отдельном EXE, поэтому по умолчанию он делает многопоточным.
Так как это работает так:
Вы вызываете метод LongRunningOperation на объект ActiveX EXE В методе LongRunningOperation вы создаете экземпляр Timer и он стартует почти сразу. Вы выходите из метода LongRunningOperation, тем самым отдавая управление объекту, который его вызвал. Затем вы связываетесь с главным приложением через события (например, LongRunningOperationProgress или LongRunningOperationComplete и т. Д.)
Я рекомендую Timer object from Karl Petersen.
Это всегда случалось со мной. Затем я узнал, как оптимизировать мою базу данных, чтобы сделать ее быстрее. Проблема исчезла. –