I had some trouble with Context_Resume -- after calling it, the next Maps_* function call always gave me an access violation -- Context_ForceResume seems to work fine, though.
Well, if you use that, you can cause bad stuff to happen if the user does have a second tool running - something like Dwarf Therapist for example. See, each thread on Windows has a counter that says how many times it was suspended, so that multiple things that need the thread to stop executing get the expected behavior - each suspends once and resumes once when they need. When the counter reaches zero again, the thread can run. What you're doing here is that you force the thread to resume. This can break other tools, because they assume DF isn't doing anything with its memory while they manipulate it.
The fact that you *aren't* getting a segfault/exception from ForceResume is due to a bug, and the fact you are getting a segfault//exception from Resume is possibly due to a second bug. I'll go and fix those now. See, the modules keep some data around - read in one big chunk when you call Start. This data is valid for as long as DF is suspended. Resuming makes the data invalid and possibly dangeorus to use. Resume wiped it out, ForceResume didn't. Now it will.
So, use Suspend and Resume, and Start all the modules you need after the Resume again. ForceResume is there for dfunstuck, which is for cleaning up after crashing/too soon closed tools.