> 1. Suspend the Thread: SuspendThread ();
> 2. get the thread context: GetThreadContext();
> 3. modify the IP in the context, we can also store argumnets we
> want to pass in the context (in other registers).
> 4. set the thread context: SetThreadContext();
> 5. resume the thread: ResumeThread();
One thing.
If thread to be aborted is currently asleep or is waiting, then it's not possible
to interrupt it this way - it will continue to wait after
SetThreadContext/ResumeThread.
One possible solution is to use alertable APIs, such as SleepEx to implement
Thread::Sleep().
Then use asynchronous notifications to ensure interruption.
Like this:
SetThreadContext(hThread, &new_ctx);
QueueUserAPC(empty_function, hThread, NULL);
ResumeThread(hThread);
Sergey
_______________________________________________
Mono-list maillist - [EMAIL PROTECTED]
http://lists.ximian.com/mailman/listinfo/mono-list