关于中止函数运行(高分求教) 我是放在标准模块中的啊,只是调用的时候我加了几个参数,特别是其中包括MSHGRID控件 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 就是你呀?我那天说的可能不够明确:终止线程其实可以不用那个CR变量判断,可直接用Run3Thread.Terminate,只要新线程中运行的函数没有调用它函数自身外的东西就不会有内存泄漏的危险。但是,用Terminate必须编译成exe后才可以完全退出,在VB环境中即使没有内存泄漏也不能中止,我也不知道为什么?所以,保险起见,还是用一个变量来判断让函数自行结束比较好!明白吗? 还是没看懂,编译成EXE是什么意思,难道这个函数只有在整个程序编译成可执行文件后才有效,在调试状态下没有作用吗.对于我这种情况会不会有你说的内存泄漏的问题. 你用多线程运行的函数是什么,贴出来我看看。编译成EXE是指在VB环境中不管怎样,Terminate后都不能中止,所以我贴给你的例子用了CR变量来判断。但编译成EXE后同样的代码,只要没有内存泄漏,Terminate后再关闭整个程序就可以完全退出进程。 简单来说就是多线程不能在VB中调试,所以用VB编多线程很困难。 我又仔细看了一下,发现以下问题:你这样启动函数是完全不对的: Call AddSurveyResultToGrid(udfCurrentNode, MSHGridData, datQueryDate) udfRunThread.Initialize AddressOf AddSurveyResultToGrid我给你例子中多线程运行函数的方法是:Run3Thread.Initialize AddressOf RunRunRunRun3Thread.Enabled = True这样就已经运行了你上面那个Call等于在主线程运行函数,所以正确方法是:udfRunThread.Initialize AddressOf AddSurveyResultToGridudfRunThread.Enabled = True用多线程运行的函数无法传递参数!所以你要用全局变量等其他方法传递参数。还有,根据你说的函数中需要用到MSHGRID控件等来看,你绝对不能用udfRunThread.Terminate来终止函数,还是用全局变量来判断吧!多线程也是API,所以不存在VB用不了的事情,即使用VC编也有以上我说的限制,只要你正确使用就OK! '类似问题我在线程函数中设置了一个变量,先设置为True ,然后等待执行结束后再中断.Private Sub Form_Unload(Cancel As Integer) bStop = True If Not objThreadDown Is Nothing Then bStopThread = True Sleep (300) objThreadDown.TerminateCurrentThread Set objThreadDown = Nothing End IfEnd Sub ListView中按下[Alt]+[Enter]后总会有一声Beep的声音,请问高手们怎么取掉它.急!!谢谢大家! 这个程序怎么不好使呢,大家来看看 vb中数组越界及错误号提示的问题,程序进程被卡!!望赐教! vb中的dat文件是怎么一回事? 在线等,很急,windows画图程序的保存问题! 如何将短文件名转换成长文件名??? 关于listView的用法 郑重推荐给大家了解一下!(非技术性质) 请教用API获取Windows目录的问题 !!!!!!!!非高手勿进!!!!!!!!!!!!! 网页中的表格怎样实现表格大小固定? 如何在程序中查看ODBC名,
所以,保险起见,还是用一个变量来判断让函数自行结束比较好!明白吗?
对于我这种情况会不会有你说的内存泄漏的问题.
Call AddSurveyResultToGrid(udfCurrentNode, MSHGridData, datQueryDate)
udfRunThread.Initialize AddressOf AddSurveyResultToGrid
我给你例子中多线程运行函数的方法是:
Run3Thread.Initialize AddressOf RunRunRun
Run3Thread.Enabled = True
这样就已经运行了
你上面那个Call等于在主线程运行函数,所以正确方法是:
udfRunThread.Initialize AddressOf AddSurveyResultToGrid
udfRunThread.Enabled = True用多线程运行的函数无法传递参数!
所以你要用全局变量等其他方法传递参数。还有,根据你说的函数中需要用到MSHGRID控件等来看,你绝对不能用udfRunThread.Terminate来终止函数,还是用全局变量来判断吧!多线程也是API,所以不存在VB用不了的事情,即使用VC编也有以上我说的限制,只要你正确使用就OK!
我在线程函数中设置了一个变量,先设置为True ,然后等待执行结束后再中断.
Private Sub Form_Unload(Cancel As Integer)
bStop = True
If Not objThreadDown Is Nothing Then
bStopThread = True
Sleep (300)
objThreadDown.TerminateCurrentThread
Set objThreadDown = Nothing
End If
End Sub