0

Visual Studio 2012 で VB を使用しています。クリアする必要があるものをクリアする方法がわかりません。

以下で使用しているコードを参照してください。

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

    If RichTextBox1.Text > "" Then
        pingProc.CancelOutputRead()
        'Need Clearing code here
        RichTextBox1.Text = ""
    End If
    Me.Height = 522

    With pingProc.StartInfo
        .FileName = "cmd.exe"
        .Arguments = "/c C:\Tracert.bat"
        .RedirectStandardInput = True
        .RedirectStandardOutput = True
        .UseShellExecute = False
        .CreateNoWindow = True
    End With

    AddHandler pingProc.OutputDataReceived, AddressOf HandleProcessOutput

    pingProc.Start()
    pingProc.BeginOutputReadLine()

End Sub

Private Sub HandleProcessOutput(ByVal sender As Object, ByVal e As System.Diagnostics.DataReceivedEventArgs)
    Me.Invoke(New DelegateAddText(AddressOf AddText), New Object() {e.Data})
End Sub

Delegate Sub DelegateAddText(ByVal Text As String)
Private Sub AddText(ByVal Text As String)
    RichTextBox1.Text &= Text & vbCrLf
End Sub

このコードを実行すると、正常に動作します。しかし、2回以上実行する必要があります。私がそうすると、このコードを実行する回数に応じて、2 倍以上のコピーが作成されます。

ファーストラン:

Performing Trace Route to 198.224.169.244
Tracing route to 244.sub-198-224-169.myvzw.com [198.224.169.244]
over a maximum of 30 hops:

2 回目の実行:

Performing Trace Route to 198.224.169.244
Performing Trace Route to 198.224.169.244
Tracing route to 244.sub-198-224-169.myvzw.com [198.224.169.244]
Tracing route to 244.sub-198-224-169.myvzw.com [198.224.169.244]
over a maximum of 30 hops:
over a maximum of 30 hops:
4

1 に答える 1

0

が原因でAddhandlerある可能性があります...だから、これを試すことができます..

Dim Handled As Boolean

If Not Handled Then 
  AddHandler pingProc.OutputDataReceived, AddressOf HandleProcessOutput
  Handled = True
End If
于 2013-07-24T08:00:38.377 に答える