UnGacing doesn't work

Recently I have faced a very strange issue, I have UnGaced the DLL but it was still being referenced by the application. I have developed a Workflow based application which does some computation once a document is uploaded to the Document Library. DLL was not in the GAC but still it was being referenced and computation was happening even after "IISRESET" multiple time.

Fortunately while trying lot of different options I have tried restarting the SharePoint Timer Service and that worked finally. It seems SharePoint Timer Service (OWSTimer) is caching the DLLs and not releasing the reference even after restarting the IIS.

So for all my workflow related DLLs I follow below steps:

1. UnGAC the application specific DLL

2. IISRESET

3. Restart SharePoint Timer Service

4. GAC the DLL

5. IISRESET

6. Restart SharePoint Timer Service

Someone might have different experience and want to share, please do so …

Cheers !!!