Получение исключения при попытке удалить файл COM dll после выгрузки домена приложения

Получение исключения при попытке удалить файл COM dll после выгрузки домена приложения. Сведения об исключении: не удалось применить автоматическое обновление System.UnauthorizedAccessException: доступ к пути "IQVdxp32.dll" запрещен. Код:

private bool ApplyUpdate(string tempfolderpath)
    {
        bool result;
        try
        {
            Destroy();
            if (Directory.Exists(moduledir))
                Directory.Delete(moduledir, true); /*Getting excpetion while deleting that unload appdomain directory*/
            DirectoryUtils.Copy(tempfolderpath, moduledir);
            Create();
            log.Info("Auto update successful for module : " + modulename);
            result = true;
        }
        catch (Exception exception)
        {
            log.Error("Failed to apply auto update", exception);
            result = false;
        }
        return result;
    }
 public void Destroy()
    {
        if (appdomain != null)
        {
            lock (objappdomainlocker)
            {
                if (appdomain != null)
                {
                    CoFreeUnusedLibrariesEx(10000, (UInt32)0);
                    System.Threading.Thread.Sleep((int)10000);
                    if (loader != null && apolomain != null)
                    {
                        loader.CallInternalOnObject("Destroy", null, apolomain);
                    }
                    // unload the AppDomain completely
                    AppDomain.Unload(appdomain);
                    appdomain = null;
                    loader = null;
                    apolomain = null;
                    IsPersist = false;
                 }
            }
        }
    }

[DllImport("ole32.dll")]
    public static extern void CoFreeUnusedLibrariesEx(UInt32 unloadDelay, UInt32 reserved);

0 ответов

Другие вопросы по тегам