weil es sich so kompliziert anhört, aber so einfach ist:

public void Start()
{
WebRequest req
= HttpWebRequest.Create("http://blogs.dotnetgerman.com/dani.net");
req.BeginGetResponse(
new AsyncCallback(ResponseCallback), req);
}

void ResponseCallback(IAsyncResult ar)
{
HttpWebRequest req
= (HttpWebRequest)ar.AsyncState;
WebResponse resp
= req.EndGetResponse(ar);
// ab hier gehts normal weiter... }

Das ganze funktioniert mit asynchronen delegate-calls ("Begin...") - d.h. natürlich,
dass sich dieses Prinzip nicht nur auf WebRequests beschränkt, sondern generell
bei Delegaten angewendet werden kann.