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>
Вызывается при запуске и завершении отслеживания.
Вызывается, чтобы определить, ссылается ли экземпляр управляемого объекта в другом месте и не должен собираться сборкой данных.
- trackedObjectEnteredFinalization
-
delegate* unmanaged<nativeint, Void>
Вызывается, когда отслеживаемый объект входит в очередь завершения.
- unhandledExceptionPropagationHandler
- ObjectiveCMarshal.UnhandledExceptionPropagationHandler
Обработчик для распространения необработанных исключений через управляемую —> собственную границу (то есть обратный P/Invoke).
Комментарии
Все неуправляемые указатели функций должны быть написаны в машинном коде, так как они будут вызываться GC и управляемым кодом не могут выполняться в то время.
Вызывается beginEndCallback при начале и завершении отслеживания ссылок. Связанная пара begin/end никогда не будет вложена. При использовании GC рабочей станции пара begin/end будет вызываться в одном потоке. При использовании сервера GC пара begin/end не гарантируется вызываться в одном потоке.
Значение isReferencedCallback 0 должно возвращаться не для ссылки или 1 для ссылки. Любое другое значение имеет неопределенное поведение.