c++提供回調函數的接口,給c#調用
c++:
聲明:
typedef void(*SelfDetectCb)(int result);// 設備名稱,狀態(1成功,0失敗)
extern "C" BGISEQEXPORT BOOL WINAPI Seq_AutoSelfDetect(SelfDetectCb callback);
實現:
extern "C" BGISEQEXPORT BOOL WINAPI Seq_AutoSelfDetect(SelfDetectCb callback)
{
callback(0);
return TRUE;
}
c#:
聲明:
public delegate void SelfDetectCb(int result);
[DllImport("BGISequence.dll", EntryPoint = "Seq_AutoSelfDetect", CharSet = CharSet.Unicode)]
public static extern bool Seq_AutoSelfDetect(SelfDetectCb callback);
調用:
IBGISequence.SelfDetectCb callback = new IBGISequence.SelfDetectCb(CallbackFunc);
IBGISequence.Seq_AutoSelfDetect(callback);
public static void CallbackFunc(int result)
{
// 處理
}
備註:這裏的回調函數爲public static類型,但若回調函數中需要處理非靜態成員,就得聲明爲private類型。