Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как в поток передать параметры из формы? / 15 сообщений из 15, страница 1 из 1
30.04.2009, 10:13
    #35962710
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в поток передать параметры из формы?
Здравствуйте...подскажите пожалуйста Как в поток передать параметры из формы?
Поток в отдельном модуле...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Option Explicit
Public Declare Function CreateThread Lib "kernel32" _
            (ByVal lpThreadAttributes As Any, _
            ByVal dwStackSize As Long, _
            ByVal lpStartAddress As Long, _
            lpParameter As Any, _
            ByVal dwCreationFlags As Long, _
            lpThreadID As Long) As Long

Public thread1 As Long

Public Sub Main()
    frmOutput.Show
End Sub

Public Sub ThreadPhoneSession()
Dim i As Integer
i =  100 
While i >  0 
'While (phoneSession.Opened)
  If (phoneSession.PhoneState <> PhoneState_Idle) Then
    writeNum '(phoneSession)
  End If
  i = i -  1 
Wend
End Sub
мне нужно передать phoneSession, который определяется в коде формы...помогите пожалуйста?
...
Рейтинг: 0 / 0
30.04.2009, 12:49
    #35963255
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в поток передать параметры из формы?
ну подскажите пожалуйста если знаете
...
Рейтинг: 0 / 0
30.04.2009, 13:13
    #35963313
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в поток передать параметры из формы?
Если phoneSession это объект, то при вызове CreateThread в lpParameter передаешь ObjPtr(phoneSession).
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Public Sub ThreadPhoneSession(lPhoneState as Long)
Dim i As Integer
Dim phoneSession As MyClass
i =  100 
Set phoneSession = ObjFromPtr(lPhoneState)
While i >  0 
'While (phoneSession.Opened)
  If (phoneSession.PhoneState <> PhoneState_Idle) Then
    writeNum '(phoneSession)
  End If
  i = i -  1 
Wend
End Sub


Public Function ObjFromPtr(lObjPtr As Long) As Object
Dim LoTmp As Object
    If lObjPtr <>  0  Then
        CopyMemory LoTmp, lObjPtr,  4 
        Set ObjFromPtr = LoTmp
        CopyMemory LoTmp,  0 &,  4 
    End If
End Function
...
Рейтинг: 0 / 0
30.04.2009, 13:26
    #35963366
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в поток передать параметры из формы?
спасибо,вот только теперь ругается на ObjPtr(phoneSession) - object required
...
Рейтинг: 0 / 0
30.04.2009, 13:27
    #35963370
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в поток передать параметры из формы?
Antonariy Если phoneSession это объект , то при вызове CreateThread в lpParameter передаешь ObjPtr(phoneSession).
...
Рейтинг: 0 / 0
30.04.2009, 13:30
    #35963380
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в поток передать параметры из формы?
и ещё что CopyMemory - sub of function not defined
...
Рейтинг: 0 / 0
30.04.2009, 13:54
    #35963450
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в поток передать параметры из формы?
EmilRegisи ещё что CopyMemory - sub of function not definedКаждый начинающий VB-программист считает своим долгом написать многопоточную программу.
Почитай -ка сперва, рекомедую вторую ссылку. Может передумаешь.
...
Рейтинг: 0 / 0
30.04.2009, 14:06
    #35963486
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в поток передать параметры из формы?
да я вот именно что очень начинающий в vb))
просто до этого на нём не писал,а сейчас нужно написать именно на нём,поэтому мне многое не понятно и код часто не компиллится,хотя на той же джаве или делфи например всё было бы отлично...например из формы пытаюсь в класс сохранить переменную а он мне не даёт почему то...и не понятно почему...

Но всё же не сочтите за труд,подскажите пожалуйста,что это за функция CopyMemory такая, и откуда её взять чтоб компиллятор не ругался?
...
Рейтинг: 0 / 0
30.04.2009, 14:36
    #35963551
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в поток передать параметры из формы?
вроде разобрался...но один фиг вылетает по ошибке память не может быть read...
если отключаю Set threadparam = ObjPtr(phoneSession) то ошибки нет...то есть именно из-за этого вылетает...
...
Рейтинг: 0 / 0
30.04.2009, 14:42
    #35963568
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в поток передать параметры из формы?
к слову phoneSession это компонент ActiveX
...
Рейтинг: 0 / 0
30.04.2009, 14:53
    #35963600
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в поток передать параметры из формы?
зачем вам вообще какие-тио потоки?
вы под avaya пишите?
...
Рейтинг: 0 / 0
30.04.2009, 14:55
    #35963605
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в поток передать параметры из формы?
Просто threadparam = ObjPtr(phoneSession), без set. ObjPtr возвращает Long.
...
Рейтинг: 0 / 0
30.04.2009, 15:11
    #35963633
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в поток передать параметры из формы?
Konst_Oneзачем вам вообще какие-тио потоки?
вы под avaya пишите?Ну если кратко то суть в том что приложение цепляется к программе,ловящей звонки пользователей.и т.к. Нужно постоянно находиться в режиме ожидания звонка и при данном событии начинать его обработку,то используется бесконечный цикл,который без использования тредов вешает комп..вот собственно для этого и нужны мне потоки
...
Рейтинг: 0 / 0
30.04.2009, 15:22
    #35963653
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в поток передать параметры из формы?
как вы "цепляетесь к программе"?
может есть возможность использования событий этой программы.
все равно не понимаю проблему с потоками
...
Рейтинг: 0 / 0
30.04.2009, 16:36
    #35963836
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в поток передать параметры из формы?
EmilRegisда я вот именно что очень начинающий в vb))
просто до этого на нём не писал,а сейчас нужно написать именно на нёмЕсли нужны именно треды, то именно этот язык является худшим выбором для их реализации.

EmilRegisиспользуется бесконечный цикл,который без использования тредов вешает компЕсли он вешает комп без использования тредов, то гарантированно повесит и при использовании. Только в другом треде. А в цикл стоит добавить DoEvents. И вообще сделать из него сервис и не мучить треды.

Плюсую к вопросам Konst_One.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как в поток передать параметры из формы? / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]