我希望这是有人可以帮我解决的问题。我正在尝试使用Windows窗体中的Cisco AnyConnect内置工具运行DART捆绑包。当我使用Process.Start或System.Diagnostics.Process.Start调用exe时,在单击事件中它会复制命令。然后我让这个过程同时运行两次。使用Process.Start,我可以毫无问题地调用Cisco Connection GUI。代码如下。还有一种方法可以延迟MsgBox("文本写入文件")直到DART Bundle完成之后?
Private Sub Button6_Click(sender As Object, e As RoutedEventArgs) Handles Button7.Click
System.Diagnostics.Process.Start("C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\dart\dartcli.exe")
MsgBox("Text written to file")
Button7.Background = System.Windows.Media.Brushes.Green
End Sub
答案 0 :(得分:1)
可能是,Process start没有被调用两次,但事件被触发了两次。 放置一个断点并检查它。 如果是,那么您可以轻松地在调用堆栈中找到问题。
而且,是的,你可以延迟消息。 据我所知,这个DART Bundle执行,输出数据到文件并退出。
因此,您可以使用以下代码来解决问题。它在C#中,但它在VB.NET中应该相同或类似。
Process.Start("C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\dart\dartcli.exe");
Process.WaitForExit();
MessageBox.Show("Text written to file.");
WaitForExit()将同步等待,直到进程结束。 或者,如果您不希望阻止应用程序,则可以订阅Process.Exited事件。
private void YourMethod()
{
Process process = new Process();
process.StartInfo.FileName = "C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\dart\dartcli.exe";
process.Exited += new EventHandler(Process_Exited);
process.Start();
}
private void Process_Exited(object sender, EventArgs e)
{
MessageBox.Show("Text written to file");
}
答案 1 :(得分:0)
所以我似乎已经找到了解决问题的原因。当我创建按钮时,我遇到了点击事件名称的错误(意外重复了名称),我让Visual Studio Express自动纠正了问题。它在按钮单击事件结束时添加了一个处理程序,这导致按钮两次调用代码。我删除了处理程序,它停止了两次调用。
我离开了这个
Private Sub Button6_Click(sender As Object, e As RoutedEventArgs) Handles Button7.Click
System.Diagnostics.Process.Start("C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\dart\dartcli.exe")
MsgBox("Text written to file")
Button7.Background = System.Windows.Media.Brushes.Green
End Sub
对此。解决问题
Private Sub Button6_Click(sender As Object, e As RoutedEventArgs)
System.Diagnostics.Process.Start("C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\dart\dartcli.exe")
MsgBox("Text written to file")
Button7.Background = System.Windows.Media.Brushes.Green
End Sub
感谢大家的时间和帮助!