Как создать поток, в котоком будет выполняться фоновая функция? - VB
Формулировка задачи:
Помогите, пожалуйста создать поток, в котоком будет выполняться фоновая функция (в моем случае копирование файла но сети (RAS - соединение)).
Если у кого есть какой-нибудь исходничек, буду благодарен.
А то я уже запарился. Делаю все как написано и ничего не пашет, или вываливаются ошибки. Работал с потоками в VC++, никаких проблем, а тут...
Спасибо.
removed@mail.ru
Решение задачи: «Как создать поток, в котоком будет выполняться фоновая функция?»
textual
Листинг программы
- Option Explicit
- ' Общесистемные оболочки для работы с API
- Public Type nyExecCmd
- proc As PROCESS_INFORMATION
- WaitTimeExpired As Boolean
- ResetWaitTimeExpired As Boolean
- ProcExitCode As Long
- End Type
- ' Пускатель программ с ожиданием завершения
- Public Function ExecCmd(cmdline$, _
- Optional DefaultDir As String = '', _
- Optional flShow As VbAppWinStyle = vbHide, _
- Optional KillWinClass As String = vbNullString, _
- Optional KillWinCaption As String = vbNullString, _
- Optional ByVal WaitTime As Long = 0, _
- Optional ByVal ResetWaitTime As Long = 3600000, _
- Optional ByVal TerminateOnBadWindow As Boolean = True, _
- Optional ByVal TerminateOnWaitTime As Boolean = True) As nyExecCmd
- ' DefaultDir - каталог и диск по умолчанию для запускаемого приложения
- ' flShow - флаг вида окна при запуске
- ' KillWinClass,KillWinCaption - если не vbNullString, заставляют при их появлении
- ' в запущенном приложении убивать их (анализ - каждые 5 сек)
- ' Пример плохого окна в tbView утилите : 'Nastala chyba:'
- ' Они могут задаваться с разделителем vbCrLf - тогда это означает целый массив
- ' заказанных на закрытие окон, при этом число элементов в обоих строках должно совпадать!
- ' WaitTime -1 - не ждать окончания запущенного процесса,( в функции важны при этом proc,ProcExitCode ),
- ' TerminateProcess здесь,конечно, не делается ( об TerminateProcess должна побеспокоиться вызывающая процедура ) ;
- ' > 0 - ждать окончания не более чем WaitTime ms и не более чем ResetWaitTime ms
- ' Если время истекло а процесс не закончился, в ExecCmd.WaitTimeExpired
- ' возвращается True ( см. TerminateOnWaitTime ) ;
- ' 0 - ждать окончания бесконечно , но не молее чем ResetWaitTime ms .
- ' ResetWaitTime >0 - глобальное время (ms) ожидания окончания процесса, по истечении
- ' которого процесс снимается (см. TerminateOnWaitTime).
- ' = 0 - оно игнорируется.
- ' Если время истекло а процесс не закончился в ExecCmd.ResetWaitTimeExpired
- ' возвращается True, см. TerminateOnWaitTime.
- ' TerminateOnBadWindow = True - сорвать процесс при возникновении плохих окон , при этом событии
- ' в функции вернется proc.hProcess =0
- ' = Fasle - при возникновении плохих окон снять их и дать процессу продолжиться.
- ' TerminateOnWaitTime = True - сорвать процесс при исчерпании времен ожидания и CloseHandle тоже,
- ' при этом событии в функции вернется proc.hProcess =0
- ' = False - при исчерпании времен ожидания выйти, не срывая процесс с его proc в функции.
- ' Возврат в функции : ( proc,WaitTimeExpired,ResetWaitTimeExpired,ProcExitCode )
- ' .proc.hProcess > 0 - при удачом запуске и несрывании путем TerminateProcess,CloseHandle (см. TerminateOnBadWindow,TerminateOnWaitTime )
- ' ( или при самостоятельном завершении процесса ).
- ' = 0 - иначе.
- ' .ProcExitCode - код завершения процесса при любой ситуации .proc.hProcess.
- ' .WaitTimeExpired,.ResetWaitTimeExpired - признаки , что было исчерпание времен
- endMessage hwnd, WM_ENDSESSION, 0&, 0& ' Это команда окну честно закрыться.
- 'SendMessage hwnd, WM_QUERYENDSESSION, 0&, 0& ' Это команда окну честно закрыться.
- nyCloseWindows = True
- End If
- Loop Until hWnd = 0
- Next i
- End Function ' nyCloseWindows -->>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д