ブースト asio 非同期呼び出しを使用する Windows C++ DLL と通信するクライアントを C# で作成しています。管理された環境では ASIO がうまく機能しないことを以前に読みました。VC++ DLL は、I/O ハンドラー用のアンマネージ スレッドを作成するアンマネージ プロジェクトです。C# コードは、pinvoke を介して C++ DLL へのメッセージの送信を処理するバックグラウンド スレッドを作成します。私の質問は、boost::asio::async_write メソッドの呼び出しをマネージド スレッドで実行できるかということです。または、アンマネージ スレッド上にある必要がありますか?
マネージド スレッドで async_write を呼び出すことができれば、ロジックと処理を簡素化するのに役立ちます。しかし、.NET ガベージ コレクタが実行されてスレッドが停止するとどうなるかが心配です。ASIOがそれを処理できるかどうかはわかりません。C# コードで定義されたデータへのポインタを渡していないので、問題にはなりません。