You can create an asynchronous fetching layer already with the current code. Your fetch thread should do the fetching, based on a message received from the gui for example. Once the data is delivered, the fetch thread is invoking (thus, delegate and data) the gui method (main thread method) that it's done. You can also construct this differently of course, with a queue for example).
So indeed, you could implement this with a wrapper around the DataAccessAdapter class, however I'd opt for a thread which consumes the DataAccessAdapter instance.