0

次のように宣言されたデリゲートがあります。

        internal delegate bool readDelegate(out byte data);

ある時点で、デリゲートのインスタンスへの関数ポインターを取得したい:

        readDelegate reader = (out byte data) => 
            {
                Console.WriteLine("Managed output! opening");
                if (stream.CanRead)
                {
                    data = (byte)stream.ReadByte();
                    return true;
                }
                else
                {
                    data = 0;
                    return false;
                }
            };

可能であれば、ストリームから1バイトを読み取ります。

しかし、関数ポインタを取得しようとすると、次のようになります。

IntPtr foo = Marshal.GetFunctionPointerForDelegate(reader);

例外があります:

System.NotSupportedException was unhandled
  Message="0x80131515"
  StackTrace:
    в System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate(Delegate d)
...

理由は何ですか?コードを変更するにはどうすればよいですか?

4

1 に答える 1

0

例外の残りのメッセージは何ですか? エラーの説明が必要です。

とにかく、これはうまくいくと思います:

internal unsafe delegate bool readDelegate(byte* data);
于 2012-10-22T09:22:20.000 に答える