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

Вы должны использовать цикл in-in

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

Поэтому , при использовании for-in циклов всегда используйте метод hasOwnProperty, чтобы определить, действительно ли текущее свойство в итерации является свойством объекта, который вы проверяете:

for (var prop in p) {
    if (!p.hasOwnProperty(prop)) {
        //The current property is not a direct property of p
        continue;
    }
    //Do your logic with the property here
}
15
задан Daniel Imms 1 May 2012 в 08:06
поделиться

3 ответа

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

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

14
ответ дан 1 December 2019 в 02:56
поделиться

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

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

2
ответ дан 1 December 2019 в 02:56
поделиться

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

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

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

9
ответ дан 1 December 2019 в 02:56
поделиться