gpt4 book ai didi

VB.NET:如何在其他子循环期间保持主窗体控制?

转载 作者:行者123 更新时间:2023-12-04 23:00:35 25 4
gpt4 key购买 nike

我有一个只有一种形式的程序。
通过按下一个按钮,它开始一个 ffmpeg 转换。

在主窗体中,在文本框中,输出 ffmpeg 统计信息。这可以通过从 ffmpeg 获取 StandardError 输出来实现。

Public Sub Console()
Dim Process As New Process

Process.StartInfo.UseShellExecute = False
Process.StartInfo.RedirectStandardError = True
Process.StartInfo.RedirectStandardOutput = True
Process.StartInfo.FileName = current_ffmpeg_path
Process.StartInfo.Arguments = input_params
Process.StartInfo.CreateNoWindow = True
Process.Start()

Dim ffmpeg_stats_output As System.IO.StreamReader = Process.StandardError

Do While Process.HasExited = False
[update all main form textboxes by taking input string from ffmpeg and elaborate it]
Loop
End Sub

问题是,在执行此循环时,文本框和进度条会更新,但无法修改主窗体。事实上,用户根本无法控制。因此,如果我想在主窗体中制作一个按钮来停止/暂停 ffmpeg,则不能像主窗体上的其他任何东西一样按下它。

有一种方法可以在其他 Sub 内部保持循环,而不会在它们运行时对主窗体进行松散控制?

我试图通过调用另一个带有文本框和进度条的对话框来修复它。但即使是这种形式也完全失去了控制,直到过程完成。

将暂停/停止转换发送到 ffmpeg(在没有窗口的情况下运行)是否正确使用:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
SendKeys.Send("q")
SendKeys.Send("^s")
End Sub

还是必须指定这个key被发送到当前正在运行的Process?

最佳答案

解决了主窗口无法控制的问题...

只需使用 BackgroundWorker。

关于VB.NET:如何在其他子循环期间保持主窗体控制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28265331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com