Как создать поток, в котоком будет выполняться фоновая функция? - 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 -->>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д