На самом деле проблема была не связана с асинхронным программированием, а из-за неуправляемого кода и обработки памяти. Благодаря Alois, который указал мне правильное направление, мне удалось найти, что было не так.
Для внешней библиотеки требуется массив байтов фиксированного размера (22 000 байтов, если быть точным), и он должен находиться на тот же адрес, в то время как библиотека и мое программное обеспечение взаимодействуют. Были сделаны две большие ошибки. Во-первых, каждый раз, когда мне нужно было очистить буфер, чтобы я мог отправлять информацию во внешнюю библиотеку, я использовал bufferTEF = new buffer[22000]
. Таким образом, вместо того, чтобы очистить его, я установил новый, следовательно, изменил его адрес, поэтому во внешней библиотеке возникли проблемы с его повторным поиском. Во-вторых, всякий раз, когда я отправлял данные во внешнюю библиотеку, я использовал bufferTEF = Encoding.ASCII.GetBytes("information"))
, что означает, что я отправил обратно массив той же длины, что и отправленная информация. Поскольку внешняя библиотека ожидала минимум 20000 байт, она взорвалась и не знала, что делать.