Мой вопрос касается многопоточности в VB 6. Это, кажется, устаревший вопрос, так как сейчас люди используют VB 6.VB 6 Многопоточность путаницы
Определенно, родной VB 6 не поддерживает многопоточность напрямую. Поэтому я создаю dll C++ и выставляю метод, который вызывает CreateThread, чтобы создать рабочий поток и некоторые другие методы для управления потоком. Поток кажется прекрасным.
Чтобы уведомить об этом приложение VB 6, сначала передайте Me.hWnd в dll и зацепите WndProc перед созданием потока. Затем вызовите SendMessage в hWnd, где это необходимо. Кажется, это тоже хорошо.
Является ли этот метод стабильным для использования многопоточности в VB 6? Мне действительно нужна твоя помощь!
PS: Как насчет SHCreateThread API вместо CreateThread?
Вы должны вызвать 'SendMessage' в потоке, на котором создан' hWnd'. То, что вы делаете, будет дымиться в тот момент, когда вы его произведете. (FYI, VB6 поддерживает потоковую передачу через EXE-файлы ActiveX.) – wqw
@wqw SendMessage (я меняю его на PostMessage для предотвращения потенциальных блоков) вызывается в потоке C++, а не в потоке «UI» (или Main). Я полагаю, что сообщение отправляется по потокам. Почему вы думаете, что это не сработает? –
Обзор (со ссылками на дополнительное чтение) о том, как VB6 обрабатывает потоки, см. [This] (https://msdn.microsoft.com/en-us/library/aa261361 (v = vs.60) .aspx). «In-process component» - это ActiveX DLL. «Out-of-process component» - это ActiveX EXE. – BobRodes