public void RemoveHandler(HttpRequestHandler handler)
{
HttpRequestHandler[] newHandlers = new HttpRequestHandler[requestHandlers.Length - 1];
int j = 0;
for (int i = 0; i < requestHandlers.Length; i++)
if (!requestHandlers[i].Signature.ExactlyEquals(handler.Signature))
newHandlers[j++] = handler;
// CLR guarantees this is an atomic operation
requestHandlers = newHandlers;
}