public void Start()
{
ThreadPool.QueueUserWorkItem(
o =>
{
Trace.WriteLine("Webserver running...");
try
{
while (_listener.IsListening)
{
ThreadPool.QueueUserWorkItem(
c =>
{
var context = c as HttpListenerContext;
try
{
var response = string.Empty;
if (_responderMethod != null)
{
response = _responderMethod(context);
}
var buf = Encoding.UTF8.GetBytes(response);
context.Response.ContentLength64 = buf.Length;
context.Response.OutputStream.Write(buf, 0, buf.Length);
}
catch
{
// suppress any exceptions
}
finally
{
// always close the stream
context.Response.OutputStream.Close();
}
},
_listener.GetContext());
}
}
catch
{
// suppress any exceptions
}
});
}