我对在Visual Basic中运行批处理文件有几个疑问。
Windows窗体中有一个基于VB的按钮,并且按钮具有单击事件。
示例代码:
Dim pathtobatfile2 As String
pathtobatfile2 = "C:\extract.bat"
...............
psi2.UseShellExecute = False
Dim process2 As Process = process.Start(psi)
process2.WaitForExit()
'then do something after the bat file done
上面的代码表示当用户单击按钮时,一个隐藏的批处理文件(.bat)在后端运行。
我的问题是,当用户单击此btn时,整个应用程序窗口将被冻结,甚至无法最小化到任务栏。
有什么方法可以运行批处理文件,获得一些返回值,让我知道它已完成?或它是什么状态?因为我也想显示它的进度条。
有任何想法吗?提前致谢。
Any ideas?
是的,正因为如此,请尽量不要在Batch
使用.NET
类进行编程时依赖它。
无论如何,随着process2.WaitForExit()
您的使用,您正在等待进程退出,这就是程序冻结,程序线程正在等待的原因。
一个简单的解决方案是这样的:
Dim process2 As Process With ...
...
process2.Start()
While Not process2.HasExited
Application.doevents()
End While
' Here the process has exited,
' Then add your code here.
存在更好的方法来执行此操作(多线程,Backgroundworker),但是由于您是该语言的新手,并且视简单语言而定,Batch
因此我建议您使用简单的方法,但这是在多线程技术中引入的一个好主意。
PS:请原谅我的英语。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句