Поделиться через


ObjectiveCMarshal.Initialize Метод

Определение

Инициализируйте API маршалинга Objective-C.

public:
 static void Initialize(delegate* unmanaged<void> ^ beginEndCallback, delegate* unmanaged<IntPtr , int> ^ isReferencedCallback, delegate* unmanaged<IntPtr , void> ^ trackedObjectEnteredFinalization, System::Runtime::InteropServices::ObjectiveC::ObjectiveCMarshal::UnhandledExceptionPropagationHandler ^ unhandledExceptionPropagationHandler);
public static void Initialize (delegate* unmanaged<void> beginEndCallback, delegate* unmanaged<IntPtr, int> isReferencedCallback, delegate* unmanaged<IntPtr, void> trackedObjectEnteredFinalization, System.Runtime.InteropServices.ObjectiveC.ObjectiveCMarshal.UnhandledExceptionPropagationHandler unhandledExceptionPropagationHandler);
static member Initialize : delegate* unmanaged<unit> * delegate* unmanaged<nativeint, int> * delegate* unmanaged<nativeint, unit> * System.Runtime.InteropServices.ObjectiveC.ObjectiveCMarshal.UnhandledExceptionPropagationHandler -> unit
Public Shared Sub Initialize (beginEndCallback As delegate* unmanaged<Void>, isReferencedCallback As delegate* unmanaged< As IntPtr, Integer>, trackedObjectEnteredFinalization As delegate* unmanaged< As IntPtr, Void>, unhandledExceptionPropagationHandler As ObjectiveCMarshal.UnhandledExceptionPropagationHandler)

Параметры

beginEndCallback
delegate* unmanaged<Void>

Вызывается при начале и завершении отслеживания.

isReferencedCallback

delegate* unmanaged<IntPtr, Int32>

delegate* unmanaged<nativeint, Int32>

Вызывается для определения того, есть ли ссылка на экземпляр управляемого объекта в другом месте и не должна ли собираться сборкой мусора.

trackedObjectEnteredFinalization

delegate* unmanaged<IntPtr, Void>

delegate* unmanaged<nativeint, Void>

Вызывается, когда отслеживаемый объект входит в очередь завершения.

unhandledExceptionPropagationHandler
ObjectiveCMarshal.UnhandledExceptionPropagationHandler

Обработчик для распространения необработанных исключений через управляемую> собственную границу (т. е. обратный P/Invoke).

Комментарии

Все указатели неуправляемых функций должны быть написаны в машинном коде, так как они будут вызываться сборкой мусора, и управляемый код не может выполняться в это время.

Вызывается beginEndCallback при начале и завершении отслеживания ссылок. Связанная пара "начало-конец" никогда не будет вложенной. При использовании сборки мусора рабочей станции в том же потоке будет вызываться пара "начало-конец". При использовании сборки мусора сервера не гарантируется вызов пары "начало-конец" в одном потоке.

Объект isReferencedCallback должен возвращать значение 0 для параметра not reference или 1 для ссылок. Любое другое значение имеет неопределенное поведение.

Применяется к