如果/当多次调用DllImport时会发生什么
本文关键字:什么 DllImport 调用 如果 | 更新日期: 2023-09-27 18:09:59
我正在加载一个用Delphi 7编写的。dll,使用c# . net 4编写的Windows服务中的DllImport。在部署此服务之前,我只是想确保我不需要做任何特殊的事情来处理非托管的.dll。
我的c#代码看起来像这样:
[DllImport("MyDelphiDLL.dll")]
private static extern string DoSomething(string value);
private void SomeMethod(List<string> values)
{
foreach (string value in values)
{
string newValue = DoSomething(value);
}
}
DoSomething
函数将被多次调用,并且我怀疑 MyDelphiDLL.dll仅在加载托管.dll时加载,或者在第一次引用DoSomething时加载,但我不确定。
我已经在MSDN上查看了DllImportAttribute类文档,但它并没有真正说明这种或那种方式。我也搜索了SO,并用谷歌搜索了我能想到的每一种方式,但仍然没有找到一个明确的答案。
我只是想确保我做的是正确的
你这样做没有问题。DLL将被加载一次并保持加载状态
我认为你的dll将被加载一次。DllImport是编译器以特殊方式生成DoSomething方法代码的唯一点,而不是将方法体编译为IL。
也在深层底层似乎调用LoadLibrary WinAPI方法,只加载一次dll。我不确定是否可以在一个进程的边界内多次加载dll。