VB如何实现异步执行?有哪几种方法?

来源:百度知道 编辑:UC知道 时间:2024/06/27 10:19:39
当一个控件事件下有两个或两个以上执行步骤时,比如在click事件下要实现:1.把窗体上text中的数据写到a.txt中;
2.用shell调用exe文件对a.txt中的数据进行计算;
3.把计算结果读到VB窗体上的文本框控件中。
我找常规方法按顺序写好代码后执行,发现读到窗体里的数据根本就不是本次的计算结果,我个人的推断是:shell还没有调用exe进行计算就开始执行下面的程序把以前的计算结果读了进来,导致窗体上的输出结果滞后于exe的计算结果。请问这种问题可以同过哪几种方法解决?

在标准模块中写入以下代码:
Public Const SYNCHRONIZE = &H100000
Public Const INFINITE = &HFFFFFFFF
Public Const WAIT_TIMEOUT = &H102&

Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

'Form中
Option Explicit

sub RunExe(FileName as string)
Dim pId As Long, pHnd As Long, ret

pId = Shell(FileName, vbNormalFocus)
pHnd = OpenProcess(SYNCHRONIZE, 0, pId)
If pHnd &