Vb.net 在Visual Basic中运行批处理文件
关于在Visual Basic中运行批处理文件,我没有什么问题 windows窗体中有一个基于VB的按钮,该按钮有单击事件 示例代码:Vb.net 在Visual Basic中运行批处理文件,vb.net,batch-file,process,Vb.net,Batch File,Process,关于在Visual Basic中运行批处理文件,我没有什么问题 windows窗体中有一个基于VB的按钮,该按钮有单击事件 示例代码: Dim pathtobatfile2 As String pathtobatfile2 = "C:\extract.bat" ............... psi2.UseShellExecute = False Dim process2 As Process = process.Start(psi) proc
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?
是的,在使用.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:请原谅我的英语。你认为
process2.WaitForExit
可能是罪魁祸首吗?你的Bat文件在做什么,如果你手动运行它,它是否向控制台输出任何东西,请给出一个你正试图做的事情的示例。