ObjectiveCMarshal.Initialize 方法

定义

初始化 Objective-C 封送处理 API。

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>

调用以确定托管对象实例是否在其他位置被引用,并且不得由 GC 收集。

trackedObjectEnteredFinalization

delegate* unmanaged<IntPtr, Void>

delegate* unmanaged<nativeint, Void>

当跟踪的对象进入终结队列时调用。

unhandledExceptionPropagationHandler
ObjectiveCMarshal.UnhandledExceptionPropagationHandler

用于跨托管本机> 边界传播未经处理的异常的处理程序, (,即反向 P/Invoke) 。

注解

所有非托管函数指针都必须使用本机代码编写,因为它们将由 GC 调用,并且托管代码此时无法运行。

beginEndCallback当引用跟踪开始和结束时,将调用 。 关联的开始/结束对永远不会嵌套。 使用工作站 GC 时,将在同一线程上调用开始/结束对。 使用服务器 GC 时,不保证在同一线程上调用开始/结束对。

对于 not reference, isReferencedCallback 应返回 0,对于引用,应返回 1。 任何其他值具有未定义的行为。

适用于