Есть ли какие-нибудь документы по IPInnable и GetPinnableReference ()? - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь использовать IPinnable и GetPinnableReference (). Но я видел, что в этом топи c мало документации. Поэтому я должен задать здесь несколько вопросов

  1. IPinnable : Используется ли IPinnable где-нибудь в структуре? В частности, полагаются ли на него некоторые механики C#? Например, fixed может полагаться на GetPinnableReference ()?

  2. MemoryHandle : в MemoryHandle есть три параметра (указатель, GCHandle, IPinnable). Внутренне объекту, который содержит IPinnable, иногда необходимо вызвать GCHandle.Allo c, чтобы получить дескриптор. Затем этот дескриптор передается в MemoryHandle. При вызове Dispose в MemoryHandle GCHandle освобождается. Но в утилите MemoryHandle также вызывается открепление от IPinnable. Итак, теперь у меня есть два варианта: либо вызов Unpin на IPinnable, либо вызов Dispose на MemoryHandle .m Итак, чтобы убедиться, что я правильно понял это, сделайте MemoryHandle и объект IPinnable оба должны принять заботиться об утилизации, чтобы GCHandle был освобожден только один раз? Если это даже GCHandle, потому что я мог бы также передать не GCHandle, другими словами, просто оставьте его по умолчанию и передайте только собственный указатель. Поскольку MemoryHandle - это структура, которую я не могу передать в распоряжение собственной памяти, мне нужно поместить ее в IPinnable. Так что, в конце концов, я, возможно, не понимаю, почему GCHandle вообще передается MemoryHandle. Я просто мог бы очистить GCHandle в IPinnable.Unpin().

  3. GetPinnableReference : есть ли другое место, кроме фиксированного, где GetPinnableReference используется?

Было бы неплохо, если бы кто-нибудь мог помочь мне найти хорошую документацию по этим вопросам?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...