I have critical section that prevents multiple threads from access to virtual system simultaneously.
When I check 'in background' box and start copying files to plugin, TC moves operation to background thread and activates itself, but when I'm trying to change plugin folder, TC calls FsFindExecute function which needs to enter critical section in order to search file(s) inside virtual system (this is necessary to prevent reading from map while it changes). And if critical section is locked, TC hangs... Main thread falls into waiting for critical section loop while background thread calls ProgressProc from FsGetFileW function and hands too.
If I remove calls to ProgressProc function, it works perfect! I may browse virtual panel, add/delete links, execute internal commands, save panel contents while background operation is running.
Also TC hangs when I'm trying to pause backgroung operation and access virtual panel - it seems that TC pauses background thread that have critical section locked and main thread falls into waiting loop again.
Any suggestions would be appreciated. Maybe I'm doing something wrong, maybe its because of TC nature and may be fixed.

Currently I see only one solution - TC should not enter many plugin functions by multiple threads simultaneously (or at least prevent main thread from entering plugin function when backgroung thread is already executing some plugin function).