I'm trying to use async from the asp.net mvc futures, using my own async delegate. Haven't figured out how to make it work. Here's the code:
    public delegate String GetString();
    public String getHello() { return "Hello"; }
    public IAsyncResult BeginHello(AsyncCallback cb, Object state)
    {
        GetString dlgt = getHello; 
        return dlgt.BeginInvoke(cb, state);
    }
    public ActionResult EndHello(IAsyncResult asyncResult)
    {
        return View();
    }
In EndHello, asyncResult.IsCompleted=True, but asyncResult.AsyncState==null. I expected to have AsyncState=="Hello".
What am I missing?
Also, does it even make sense to arrange it this way? Or does this cause it to use the same thread pool anyway? Basically my thought was to put a datareader in my asynchronous function, thinking that I could loop through the reader populating a collection of objects and only return when they're done. Is it better to use BeginExecuteReader and populate the objects on the main thread?
EDIT: To anyone reading this later, this is in fact the wrong way to do it, and won't help you at all. BeginExecuteReader is the way to go.