event is triggered but something is blocking

This commit is contained in:
JanEggers
2018-07-19 21:13:27 +02:00
parent 21048b51ae
commit b55f5ff298
6 changed files with 45 additions and 24 deletions
@@ -87,8 +87,14 @@ namespace MQTTnet.Implementations
public void Dispose()
{
TryDispose(_stream, () => _stream = null);
TryDispose(_socket, () => _socket = null);
Cleanup(ref _stream, (s) => s.Dispose());
Cleanup(ref _socket, (s) => {
if (s.Connected)
{
s.Shutdown(SocketShutdown.Both);
}
s.Dispose();
});
}
private bool InternalUserCertificateValidationCallback(object sender, X509Certificate x509Certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
@@ -157,11 +163,16 @@ namespace MQTTnet.Implementations
}
}
private static void TryDispose(IDisposable disposable, Action afterDispose)
private static void Cleanup<T>(ref T item, Action<T> handler) where T : class
{
var temp = item;
item = null;
try
{
disposable?.Dispose();
if (temp != null)
{
handler(temp);
}
}
catch (ObjectDisposedException)
{
@@ -169,10 +180,6 @@ namespace MQTTnet.Implementations
catch (NullReferenceException)
{
}
finally
{
afterDispose();
}
}
}
}