是否可以在不使用DoEvents的情况下取消VB6.0中长时间运行的进程?
例如:
for i = 1 to someVeryHighNumber
' Do some work here '
...
if cancel then
exit for
end if
next
Sub btnCancel_Click()
cancel = true
End Sub
Run Code Online (Sandbox Code Playgroud)
我假设我需要一个"DoEvents"才能"如果取消那么......"还有更好的方法吗?有一阵子了...
我有一个用VB6编写的程序,它读取一个长文本文件并执行很长时间的操作.我也实现了进度条,但我的问题是,在我的程序说"没有响应"之后,它在任务完成时再次开始响应.
如何删除此"无响应"问题?
以下MSDN示例承诺演示如何使用VB6中的.NET BackgroundWorker,但它失败并出现AccessViolationException.唯一的解决方法是将VB6代码编译为P代码,但这对我们来说不是一个可行的选择.
http://msdn.microsoft.com/en-us/library/aa719109(VS.71).aspx
以下是该问题的大量细节.
objectmix.com/dotnet/331152-using-background-threads-visual-basic-6-accessviolationexcep.html
如何在不将VB6代码编译为P代码的情况下修复示例?
我有一个VB6应用程序,处理非常非常长的时间.直接杀死它是不可行的,所以我想在VB6应用程序中设置某种标志.如果在我的C#应用程序中我决定将其关闭,我想切换此标志以让VB6应用程序知道已请求关闭.现在,我还需要一些命名的东西,因为将有几个VB6应用程序作为activex exes旋转.有谁知道如何实现这样的东西?工作流程如下
C#app - 在单独的线程中旋转多个VB6 activex.exes,用某些东西初始化应用程序(以下称为标志)我可以在C#中更改,并调用DoStuff命令,这需要很长时间才能返回.
VB6 - 获取带有标志的initialize命令.DoStuff被调用.在DoStuff循环中,它检查标志是否仍然设置.
C# - 通过将标志设置为另一个状态来终止项目
有任何想法吗?