デバイスにデータを送信するには、外部DLLを使用する必要があります。DLLで使用しているメソッドは、パラメーターとしてバイト配列へのポインターを取ります。C#を使用しているので、GCHandle.Allocメソッドを使用してメモリアドレスを取得し、それをIntPtrインスタンスに割り当てています。次に、IntPtrをパラメーターとして渡します。私が心配しているのは、これまでC#でポインターとメモリ割り当てを使用したことがないため、コードにメモリリークのリスクがある可能性があることです。コードは現在、次のように機能します。
GCHandle pinned = GCHandle.Alloc(byteArray, GCHAndleType.Pinned);
IntPtr arrayPtr = pinned.AddrOfPinnedObject();
var result = _externalDll.SendInfo(arrayPtr, byteArray.Length);
pinned.Free();
これは、IntPtrを割り当てて使用する正しい方法ですか?動作しているように見えますが、これは実稼働マシンで毎日約100回同時に実行されるため、大きな問題は避けたいと思います。