私は別のアセンブリのクラスを使用する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);
問題は、私が "Func"を呼び出すとメインのC#プログラムがアンロードされないということです。メイン・フォームの中でClose()を呼び出すと、タスク・マネージャーを見るとプロセスがそこに残ります。私が "Func"への呼び出しを取り除くと、プログラムはうまくアンロードされます。私はいくつかのテストを行っており、メイン関数が確実に返ってくるので、ここで何が起こっているのか分かりません。