У меня есть программа на C #, которая использует класс из другой сборки, и этот класс вызывает неуправляемую DLL для некоторой обработки. Вот фрагмент кода:
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 программы определенно возвращается, поэтому я не уверен, что здесь происходит.