0

我对在 Visual Basic 中运行批处理文件有几个问题。

有一个基于VB的windows窗体中的按钮,并且该按钮有点击事件。

示例代码:

    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 时,整个应用程序窗口将被冻结,甚至无法最小化到任务栏。

有什么办法可以运行批处理文件,得到一些返回值让我知道它完成了吗?或者它是什么状态?因为我也想显示它的进度条。

有任何想法吗?提前致谢。

4

1 回答 1

1
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:请原谅我的英语。

于 2013-10-19T13:09:43.517 回答