Сообщение Безопасен ли такой маршалинг? от 10.11.2014 8:55
Изменено 10.11.2014 9:27 SanyaVB
Вот простой пример:
Объект IValue создается только в управляемой среде и используется как управляемым так и в неуправляемым кодом.
Вообщем для неуправляемого кода в таком случае это опасный маршалинг? Имеется ввиду влияние мусоросборщика!!!
Если все таки мусоросборщик может поменять адресное пространство объекта, то ниже написанная конструкция решит проблему?
[ComVisible(true)]
public interface IInterface
{
[return: MarshalAs(UnmanagedType.Interface)]
IInterface1 GetObject();
}
Объект IValue создается только в управляемой среде и используется как управляемым так и в неуправляемым кодом.
Вообщем для неуправляемого кода в таком случае это опасный маршалинг? Имеется ввиду влияние мусоросборщика!!!
Если все таки мусоросборщик может поменять адресное пространство объекта, то ниже написанная конструкция решит проблему?
IInterface1 obj = new ...
GCHandle objHandle = GCHandle.Alloc(obj, GCHandleType.Normal);
Безопасен ли такой маршалинг?
Вот простой пример:
Объект IInterface1 создается только в управляемой среде и используется как управляемым так и в неуправляемым кодом.
Вообщем для неуправляемого кода в таком случае это опасный маршалинг? Имеется ввиду влияние мусоросборщика!!!
Если все таки мусоросборщик может поменять адресное пространство объекта, то ниже написанная конструкция решит проблему?
[ComVisible(true)]
public interface IInterface
{
[return: MarshalAs(UnmanagedType.Interface)]
IInterface1 GetObject();
}
Объект IInterface1 создается только в управляемой среде и используется как управляемым так и в неуправляемым кодом.
Вообщем для неуправляемого кода в таком случае это опасный маршалинг? Имеется ввиду влияние мусоросборщика!!!
Если все таки мусоросборщик может поменять адресное пространство объекта, то ниже написанная конструкция решит проблему?
IInterface1 obj = new ...
GCHandle objHandle = GCHandle.Alloc(obj, GCHandleType.Normal);