其他封送處理範例
記憶體回收和執行緒等因素可能會影響 Interop 封送處理器的行為。 此外,程式撰寫模型 (Programming Model) 和型別模組之間的微妙差異可能會使傳遞資料至 Unmanaged 程式庫產生混淆。 本章節提供一組範例,強調部分這些差異。
下表列出項目之多種型別的封送處理選項、說明其用法,以及提供對應的範例之連結。
項目的型別 |
說明 |
範例 |
---|---|---|
函數指標 |
將委派傳遞至預期函式指標的 Unmanaged 函式。 |
|
使用 HandleRef 結構來避免記憶體回收 |
||
LPARAM |
使用 GCHandle 結構來將 Managed 物件傳遞至預期 LPARAM 型別的 Unmanaged 函式 |
|
單一執行緒 Apartment (STA)/多執行緒 Apartment (MTA) |
當 Unmanaged 函式呼叫 CoInitialize 時,變更預設的 Apartment 設定值 |
|
void* |
呼叫具有 void* 的函式做為參數 |