Listener.Dispose should block until operation is complete

This commit is contained in:
Louis DeJardin 2014-06-25 20:57:12 -07:00
parent 1f420837f5
commit 63637be073
1 changed files with 17 additions and 6 deletions

View File

@ -86,13 +86,24 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
public void Dispose()
{
Thread.Post(OnDispose, ListenSocket);
Console.WriteLine("Listener.Dispose");
var tcs = new TaskCompletionSource<int>();
Thread.Post(
_ =>
{
try
{
ListenSocket.Dispose();
tcs.SetResult(0);
}
catch (Exception ex)
{
tcs.SetException(ex);
}
},
null);
tcs.Task.Wait();
ListenSocket = null;
}
private void OnDispose(object listenSocket)
{
((UvHandle)listenSocket).Dispose();
}
}
}