Единственный реальный способ достичь того, что вам нужно, - это создать событие в вашем рабочем классе и запустить это событие, когда асинхронный вызов завершится, поэтому (псевдокод) ...
void StartDownload(object[] parameters)
{
var req = HttpWebRequest.Create("http://google.com");
req.BeginGetRequestStream(Completed_handler, req);
}
void Completed_handler(object sender, DownloadStringCompletedEventArgs e)
{
var request = (HttpWebRequest)result.AsyncState;
var response = request.EndGetResponse(result);
using (var stream = response.GetResponseStream())
using (var reader = new StreamReader(stream))
{
var contents = reader.ReadToEnd();
NotifyCallerOfContent(contents)
}
}
public event EventHandler<MyCustomEventArgsClass> DownloadHasFinished;
public NotifyCallerOfDownload(string content)
{
if(null != DownloadHasFinished)
{
DownloadHasFinished(this, new MyCustomEventArgsClass(content));
}
}
и затем подпишитесь на событие DownloadHasFinished в вашем классе вызова.
Что касается специфического вызова HttpWebRequest, взгляните на этот вопрос , где вы найдете несколько рабочих примеров.