[de] TcpEx und das Beenden der Anwendung (solved)

Topics: Technical Support
Jun 25, 2013 at 7:59 AM
Ich habe meine Anwendung von Http auf TcpEx umgestellt - eigentlich nur zwei Zeilen Code im Client/Server geändert. Seit dem wird die Anwendung nicht mehr komplett beendet. In VS muss ich dann extra das "Debuggen beenden" drücken.

Dabei habe ich festgestellt:
ZyanConnection.Finalize und .Dispose werden ausgeführt (sehe ich in der Aufrufliste). "Hängen" tut er im Prinzip auf
ar.AsyncWaitHandle.WaitOne();
(Zeile 99 in der ClientTransportSink.cs - Zyan.Communication.Protocols.Tcp.DuplexChannel)

Was muss ich noch machen, damit meine Anwendung wieder komplett geschlossen wird?
Coordinator
Jun 26, 2013 at 4:57 PM
Edited Jun 26, 2013 at 4:57 PM
Hi,
ZyanConnection.Finalize
Looks like you don't dispose ZyanConnection leaving it to the garbage collector, which isn't a good idea.
Try disposing it yourself explicitly, for example via the Using statement:
Using Conn As New ZyanConnection(Url, Protocol)
    Dim Proxy As IService = Conn.CreateProxy(Of IService)
    Proxy.ExecuteMethods... ' your application logic
End Using
Or by calling Dispose in your main form's Dispose method:
Public Overrides Sub Dispose(Disposing As Boolean)
    If Disposing Then
         If ZyanConnection <> Nothing Then
            ZyanConnection.Dispose()
            ZyanConnection = Nothing
         End If
    End If
End Sub
Jun 27, 2013 at 7:52 AM
Thank you for the hint.

I check my application for this aspect and found the right place to close the connection if the application is ending

Thanks for the fast response and fine support