У меня есть программа на C#, которая использует класс из другой сборки, и этот класс вызывает неуправляемую DLL для выполнения некоторой обработки. Вот отрывок:C# program (process) не выгружает
public class Util
{
const string dllName = "unmanaged.dll";
[DllImport(dllName, EntryPoint = "ExFunc")]
unsafe static extern bool ExFunc(StringBuilder path, uint field);
public bool Func(string path, uint field)
{
return ExFunc(new StringBuilder(path), field);
}
...
}
Util util = new Util();
bool val = util.Func("/path/to/something/", 1);
Проблема у меня в том, что если я называю «Func» моя главная C# программа не будет выгружен. Когда я вызываю Close() внутри моей основной формы, процесс все равно будет, если я посмотрю в диспетчере задач. Если я удалю вызов «Func», программа выгрузится нормально. Я провел некоторое тестирование, и программа Main Function определенно вернулась, поэтому я не уверен, что здесь происходит.