I have the same problem. When I try to export an image of the active view after a refresh, I have the COMException that says the data is not yet available.
Well, I didn't really solve it, as I still can't access it from multiple threads simultaneously. I made sure I only access it from one thread at a time (and generally - from one thread only, which is not the UI thread.)
Can't check right now but it looks to me that isn't possible to use reference from on thread into another. IActiveView is reference to the ActiveView object. I don't have idea how to reuse object from another thread but SDK has something in case you didn't know. It seems to me like good way to go.
Overhead in multi thread will slow whole thing and will make code more complex to maintain, are you sure this is the right way or maybe requirement is not suited for ArcMap Desktop rather some web service.
I realized that my problem was caused because the map had not finished refreshing the annotation drawphase, so I solved it with a flag in the axMapControl OnAfterDraw