如何把一个过程写成一个线程

三色 2004-11-02 12:55:53
我写的一个过程由于调用很多excel文件,所以在执行时会占用很多cpu资源,从而导致程序运行时无法接受其它响应,也就是程序完全被这个过程占用。
请问如何解决?盼赐教
...全文
167 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yingxiangchen 2004-11-05
  • 打赏
  • 举报
回复
Do While Not (File).Eof
Doenents
'you Code
Loop
三色 2004-11-03
  • 打赏
  • 举报
回复
Doevents语句怎么加啊?我以前没用过vb,所以很多东西不熟。
yingxiangchen 2004-11-03
  • 打赏
  • 举报
回复
在对打开的Excel做动作的时候加入一个Doevents语句,试试看
三色 2004-11-03
  • 打赏
  • 举报
回复
'但是我还是不太明白。
'我举个例子:
private function myfun(...)
...'其中调用了很多excel文件,如下
Dim xexl As Object
Set xexl = CreateObject("Excel.Application")
xexl.Workbooks.Open ("test1.xls")
...'对test1.xls有很多操作,test1.xls有很多数据
xexl.Workbooks("test1.xls").Close (True)
end function
''
Private Sub Command1_Click()
call myfun(...)'调用myfun过程之行时间太长,而且程序“死”这里,要很长时间
MsgBox ("Hello!")
End Sub

'如何解决?
51365133 2004-11-02
  • 打赏
  • 举报
回复
楼上的不错!!佩服
leolan 2004-11-02
  • 打赏
  • 举报
回复
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Const STANDARD_RIGHTS_REQUIRED As Long = &HF0000
Private Const SYNCHRONIZE As Long = &H100000
Private Const PROCESS_ALL_ACCESS As Long = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF)

Private Sub Command1_Click()
Dim pId As Long
Dim pHnd As Long
pId = Shell("C:\Program Files\Microsoft Office\Office\Excel.exe", vbNormalNoFocus)
pHnd = OpenProcess(PROCESS_ALL_ACCESS, 0, pId)
MsgBox ("Hello!")
Call CloseHandle(pHnd)
End Sub
BlueBeer 2004-11-02
  • 打赏
  • 举报
回复
DoEvents

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧