У меня есть c# приложение, которое включает в себя различные внешние библиотеки DLL. При запуске приложения dll извлекаются в папке .exe, чтобы обеспечить правильное выполнение. здесь код:
var executingAssembly = Assembly.GetExecutingAssembly();
string folderName = string.Format("{0}.Resources.DLLs", executingAssembly.GetName().Name);
var list = executingAssembly
.GetManifestResourceNames()
.ToArray();
foreach (var item in list)
{
File.WriteAllBytes(item.Replace("myapp.DLLs.", ""),
ReadAllBytes(executingAssembly.GetManifestResourceStream(item)));
}
когда я закрываю форму, я хочу удалить эти файлы с этим кодом, связанным с событием закрытия формы:
private void CleanFiles(Object sender, FormClosingEventArgs e)
{
var executingAssembly = Assembly.GetExecutingAssembly();
string folderName = string.Format("{0}.Resources.DLLs", executingAssembly.GetName().Name);
string folder = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
var list = executingAssembly
.GetManifestResourceNames()
.ToArray();
foreach (var item in list)
{
File.Delete(folder + @"\" + item.Replace("myapp.DLLs.", ""));
}
}
Если я открою, а затем закройте форму, она работает отлично. Но если я открою форму, сделаю несколько операций, она выдаст исключение во время операций закрытия, потому что доступ к dll запрещен. Как я могу освободить все библиотеки / ресурсы?