Vb.net 在Visual Basic中运行批处理文件

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

关于在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?
是的,在使用
.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文件在做什么,如果你手动运行它,它是否向控制台输出任何东西,请给出一个你正试图做的事情的示例。