我有一个C#程序使用另一个程序集中的类,并且此类调用非托管DLL来执行一些处理。这里是一个片段:C#程序(进程)不会卸载
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);
我遇到的问题是,如果我叫“功能”我的主C#程序将无法卸载。当我在主窗体中调用Close()时,如果我查看任务管理器,该过程仍然会在那里。如果我删除对“Func”的调用,则程序卸载正常。我做了一些测试,程序的主要功能肯定会返回,所以我不确定这里发生了什么。