私はCLRはいくつかのケースでマーシャリング行う必要があることを理解し、しかし、のは、私が持っているとしましょう:「ネイティブに管理された移行」の間に正確に何が起こるのですか?
using System.Runtime.InteropServices;
using System.Security;
[SuppressUnmanagedCodeSecurity]
static class Program
{
[DllImport("kernel32.dll", SetLastError = false)]
static extern int GetVersion();
static void Main()
{
for (; ;)
GetVersion();
}
}
私は、デバッガでこのプログラムに侵入すると、私はいつも見る:
(右?)に行われる必要がある何のマーシャリングが存在しないことを考えると、誰かが実際には、この「管理ツーネイティブの移行」でが起き、そしてなぜそれが必要である何説明してくださいだろうか?
たぶん、呼び出しスタック内のその行は、あなたが –
@DavidHeffernanに移行したときに、あなたが知っているように、単に有益である:ああ.......私はそれがあまりにも作品を推測します..しかし、何か他にも起こっている気がします(私は間違っていることが分かりますが!)。 – Mehrdad
@DavidHeffernan: 'kernel32.dll'から' mscoree.dll'へ行くときに同じことを言っていないのは面白いことですが、実際には何かが起こっていると思われます。 – Mehrdad