Страница: 1 |
Люди, подскажите, как безопасно реализовать параллельные потоки в программе. Испробовал разные способы, они прекрасно работают в режиме отладки. После компиляции в EXE файл работать напрочь отказываюстя или выбивают в процессе работы. Что делать?
Собственно, насколько я знаю, в VB6 многозадачность не была реализована, разве что в ActiveX.exe. В своей программе приходится пользоваться API CreateThread. Работает замечательно в процессе отладки, после компиляции - выкидывает ошибку приложения (адрес памяти и сообщение, что память не может быть written). Вот так... Ну, к примеру, такой... 'код формы Private WithEvents Slep As Sleeper Private Sub Command1_Click() Progress.Value = 0 Start Slep End Sub Private Sub Form_Load() Set Slep = New Sleeper End Sub Private Sub Slep_Done() Progress.Text = "Complete" End Sub Private Sub Slep_Process(ByVal Percent As Byte) Progress.Value = Percent Progress.Text = Percent & "%" End Sub 'код модуля Option Explicit Declare Function CreateThread Lib "kernel32" (lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadID As Long) As Long Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Public hThread As Long, hThreadID As Long Public Slep As Sleeper Sub Start(ByRef Obj As Sleeper) Set Slep = Obj hThread = CreateThread(ByVal 0&, ByVal 0&, AddressOf thread, ByVal 0&, ByVal 0&, hThreadID) CloseHandle hThread End Sub Sub thread() Slep.Wait End Sub код класса, думаю, приводить не надо. Так вот, работает все стабильно в среде VB. Как в отдельный ехе компилируешь - все, труба... Страница: 1 |
Вопрос: Есть безопасный способ MultiThread'а в VB ?
Добавлено: 08.08.03 16:06
Автор вопроса: LamerOnLine | ICQ: 334781088
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
shuffle
Администратор
ICQ: 201502381
Вопросов: 15
Ответов: 737
Профиль | | #1
Добавлено: 09.08.03 20:40
Собственно в VB6 многопоточность была и так крайне безопасна... Какой то у тебя экзотический глюк... Опиши подробнее ошибку
Номер ответа: 2
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #2
Добавлено: 11.08.03 13:33
Номер ответа: 3
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #3
Добавлено: 13.08.03 04:40
Код покажи
Номер ответа: 4
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #4
Добавлено: 13.08.03 08:47