Как создать поток, в котоком будет выполняться фоновая функция? - VB

Узнай цену своей работы

Формулировка задачи:

Помогите, пожалуйста создать поток, в котоком будет выполняться фоновая функция (в моем случае копирование файла но сети (RAS - соединение)). Если у кого есть какой-нибудь исходничек, буду благодарен. А то я уже запарился. Делаю все как написано и ничего не пашет, или вываливаются ошибки. Работал с потоками в VC++, никаких проблем, а тут... Спасибо. removed@mail.ru

Решение задачи: «Как создать поток, в котоком будет выполняться фоновая функция?»

textual
Листинг программы
  1. Option Explicit
  2. ' Общесистемные оболочки для работы  с API
  3. Public Type nyExecCmd
  4.  proc As PROCESS_INFORMATION
  5.  WaitTimeExpired As Boolean
  6.  ResetWaitTimeExpired As Boolean
  7.  ProcExitCode As Long
  8. End Type
  9. ' Пускатель программ с ожиданием завершения
  10. Public Function ExecCmd(cmdline$, _
  11.                Optional DefaultDir As String = '', _
  12.                Optional flShow As VbAppWinStyle = vbHide, _
  13.                Optional KillWinClass As String = vbNullString, _
  14.                Optional KillWinCaption As String = vbNullString, _
  15.                Optional ByVal WaitTime As Long = 0, _
  16.                Optional ByVal ResetWaitTime As Long = 3600000, _
  17.                Optional ByVal TerminateOnBadWindow As Boolean = True, _
  18.                Optional ByVal TerminateOnWaitTime As Boolean = True) As nyExecCmd
  19. ' DefaultDir - каталог и диск по умолчанию для запускаемого приложения
  20. ' flShow     - флаг вида окна при запуске
  21. ' KillWinClass,KillWinCaption - если не vbNullString, заставляют при их появлении
  22. ' в запущенном приложении убивать их (анализ - каждые 5 сек)
  23. ' Пример плохого окна в tbView утилите : 'Nastala chyba:'
  24. '  Они могут задаваться с разделителем vbCrLf - тогда это означает целый массив
  25. '  заказанных на закрытие окон, при этом число элементов в обоих строках должно совпадать!
  26. ' WaitTime  -1 - не ждать окончания запущенного процесса,( в функции важны при этом proc,ProcExitCode ),
  27. '                TerminateProcess здесь,конечно, не делается ( об TerminateProcess должна побеспокоиться вызывающая процедура ) ;
  28. '          > 0 - ждать окончания не более чем WaitTime ms и не более чем ResetWaitTime ms
  29. '                Если время истекло а процесс не закончился, в ExecCmd.WaitTimeExpired
  30. '                возвращается True ( см. TerminateOnWaitTime ) ;
  31. '            0 - ждать окончания бесконечно , но не молее чем ResetWaitTime ms .
  32. ' ResetWaitTime  >0 - глобальное время (ms) ожидания окончания процесса, по истечении
  33. '                 которого процесс снимается (см. TerminateOnWaitTime).
  34. '               = 0 - оно игнорируется.
  35. '                 Если время истекло а процесс не закончился в ExecCmd.ResetWaitTimeExpired
  36. '                 возвращается True, см. TerminateOnWaitTime.
  37. ' TerminateOnBadWindow = True - сорвать процесс при возникновении плохих окон , при этом событии
  38. '                        в функции вернется proc.hProcess =0
  39. '                      = Fasle - при возникновении плохих окон снять их и дать процессу продолжиться.
  40. ' TerminateOnWaitTime = True  - сорвать процесс при исчерпании времен ожидания и CloseHandle тоже,
  41. '                        при этом событии в функции вернется proc.hProcess =0
  42. '                     = False - при исчерпании времен ожидания выйти, не срывая процесс с его proc в функции.
  43. ' Возврат в функции : ( proc,WaitTimeExpired,ResetWaitTimeExpired,ProcExitCode )
  44. ' .proc.hProcess > 0 - при удачом запуске и несрывании путем TerminateProcess,CloseHandle (см. TerminateOnBadWindow,TerminateOnWaitTime )
  45. '                                       ( или при самостоятельном завершении процесса ).
  46. '                = 0 - иначе.
  47. ' .ProcExitCode - код завершения процесса при любой ситуации .proc.hProcess.
  48. ' .WaitTimeExpired,.ResetWaitTimeExpired - признаки , что было исчерпание времен
  49.     endMessage hwnd, WM_ENDSESSION, 0&, 0& ' Это команда окну честно закрыться.
  50.   'SendMessage hwnd, WM_QUERYENDSESSION, 0&, 0& ' Это команда окну честно закрыться.
  51.   nyCloseWindows = True
  52.   End If
  53.  Loop Until hWnd = 0
  54. Next i
  55.  
  56. End Function ' nyCloseWindows -->>

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы