File System MiniFilter - File Modification in PreCreate

I have some User Space file processing that occasionally get’s called from a message from a PreCreate routine. This modifies the file that is being opened.

My MiniFilter Driver ignores IOs from my User Space process.
I notice that a close in user space seems to hang for a significant time
if another PreCreate request comes in before the user space close is started/completed.

The UserSpace uses overlapped IO and locks to serialize procesing for a particular file via a user space lock.

Sequence of Events:

Kernel Mode Thread1 PreCreate FltSendMessage
User Mode Thread1 Message Processing Lock File Spec
User Mode Thread1 Open/Modify File
Kernel Mode Thread2 PreCreate FltSendMessage
User Mode Thread2 MessageProcessing Blocked by Lock
User Mode Thread1 Close File (Hangs for a significant time)
User Mode Thread1 Release Lock and returns Message Response.

Not sure of the order here but … I do not think it matters.
Kernel Mode Thread1 PreCreate completes.
User Mode Thead2 obtains lock and notices processing competed and exits.
User Mode Thread2 Releases Lock and returns Message Response.
Kernel Mode Thread2 PreCreate completes.

Any ideas on how to eliminate the long timeout in the close ?
The file needs to be closed before I can continue from the PreCreate
or I may get a file sharing violation.