Hello,
I took a deep look into your source to find out, how to marshal the IDataObject-interface to put the DragAndDrop into another thread. But what I can not understand is, that you reattach the Drag-And-Drop-thread into the mainthread again. At the end the additional dnd-thread seems to be needless. Did I miss something?