ObjectiveCMarshal.Initialize 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
初始化 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>
在跟踪开始和结束时调用。
调用以确定托管对象实例是否在其他位置被引用,并且不得由 GC 收集。
- trackedObjectEnteredFinalization
-
delegate* unmanaged<nativeint, Void>
当跟踪的对象进入终结队列时调用。
- unhandledExceptionPropagationHandler
- ObjectiveCMarshal.UnhandledExceptionPropagationHandler
用于跨托管本机> 边界传播未经处理的异常的处理程序, (,即反向 P/Invoke) 。
注解
所有非托管函数指针都必须使用本机代码编写,因为它们将由 GC 调用,并且托管代码此时无法运行。
beginEndCallback
当引用跟踪开始和结束时,将调用 。 关联的开始/结束对永远不会嵌套。 使用工作站 GC 时,将在同一线程上调用开始/结束对。 使用服务器 GC 时,不保证在同一线程上调用开始/结束对。
对于 not reference, isReferencedCallback
应返回 0,对于引用,应返回 1。 任何其他值具有未定义的行为。