Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Есть безопасный способ MultiThread'а в VB ? Добавлено: 08.08.03 16:06  

Автор вопроса:  LamerOnLine | ICQ: 334781088 

Люди, подскажите, как безопасно реализовать параллельные потоки в программе. Испробовал разные способы, они прекрасно работают в режиме отладки. После компиляции в EXE файл работать напрочь отказываюстя или выбивают в процессе работы. Что делать?

Ответить

  Ответы Всего ответов: 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

Собственно, насколько я знаю, в VB6 многозадачность не была реализована, разве что в ActiveX.exe. В своей программе приходится пользоваться API CreateThread. Работает замечательно в процессе отладки, после компиляции - выкидывает ошибку приложения (адрес памяти и сообщение, что память не может быть written). Вот так...

Ответить

Номер ответа: 3
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #3
Добавлено: 13.08.03 04:40
Код покажи

Ответить

Номер ответа: 4
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #4 Добавлено: 13.08.03 08:47

Ну, к примеру, такой...

'код формы

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 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам