Bagikan melalui


ObjectiveCMarshal.Initialize Metode

Definisi

Menginisialisasi OBJECTIVE-C marshalling 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)

Parameter

beginEndCallback
delegate* unmanaged<Void>

Dipanggil saat pelacakan dimulai dan berakhir.

isReferencedCallback

delegate* unmanaged<IntPtr, Int32>

delegate* unmanaged<nativeint, Int32>

Dipanggil untuk menentukan apakah instans objek terkelola direferensikan di tempat lain, dan tidak boleh dikumpulkan oleh GC.

trackedObjectEnteredFinalization

delegate* unmanaged<IntPtr, Void>

delegate* unmanaged<nativeint, Void>

Dipanggil ketika objek terlacak memasuki antrean finalisasi.

unhandledExceptionPropagationHandler
ObjectiveCMarshal.UnhandledExceptionPropagationHandler

Handler untuk penyebaran Pengecualian yang tidak tertangani di seluruh batas terkelola -> asli (yaitu, Reverse P/Invoke).

Keterangan

Semua penunjuk fungsi yang tidak dikelola harus ditulis dalam kode asli karena akan dipanggil oleh GC dan kode terkelola tidak dapat berjalan pada saat itu.

beginEndCallback akan dipanggil ketika pelacakan referensi dimulai dan berakhir. Pasangan awal/akhir terkait tidak akan pernah ditumpuk. Saat menggunakan Workstation GC, pasangan mulai/akhir akan dipanggil pada utas yang sama. Saat menggunakan Server GC, pasangan awal/akhir tidak dijamin akan dipanggil pada utas yang sama.

isReferencedCallback harus mengembalikan 0 untuk referensi bukan atau 1 untuk dirujuk. Nilai lainnya memiliki perilaku yang tidak ditentukan.

Berlaku untuk