ANSI C で記述されたカスタム DLL を使用してデータ送信機のプロジェクトを作成しています。私の目的は、ビルドインOnDataSendingDone
コールバックによって送信した後に確認する必要があるデータのチャンクを送信することです。
問題は、そのコールバックをイベントにフックする方法がわからないため、それぞれの後にそれを待つことができることSendByte
です. たぶん、イベントはあまり良い考えではありません。
OnDataSendingDone
私の質問は次のとおりです: の後にコールバックを待つ方法はSendByte
?
手がかりを教えてください。コード スニペットは次のとおりです。
class LibWrapper
{
[DllImport(dllPath, CallingConvention = CallingConvention.Cdecl, EntryPoint = "SetCallback")]
public static extern bool SetCallback(byte functype, Delegate func);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void CallbackDelegate(UInt32 handle);
private static CallbackDelegate OnDataSendingDone;
public void OnDataSendingDoneCallback(CallbackDelegate callback)
{
OnDataSendingDone_ft = new CallbackDelegate2(callback);
SetCallback(FT_DATASENDINGDONE, OnDataSendingDone_ft);
}
}
class Transmitter
{
LibWrapper lib = new LibWrapper();
byte[] data = new byte[10];
public void OnDataSendingDone(UInt32 handle)
{
return;
}
lib.OnDataSendingDoneCallback(OnDataSendingDone);
public void TransmitData()
{
// here: sequential data transmission
foreach (byte b in data)
{
lib.SendByte(b);
// here: wait for OnDataSendingDone
}
}
}