cpprest pplx :: task :: затем вызывает моно зависание при очистке - PullRequest
0 голосов
/ 14 марта 2019

У меня есть неуправляемая dll, использующая cpprest и использующая неуправляемую функцию «Load». Функция принимает обратный вызов и вызывает обратный вызов, когда запрос выполнен.

Ниже приведен код C ++ int dll:

typedef void (__stdcall* MyCallback)();
static MyCallback g_cb;
DLL_API void Load(MyCallback cb) {
  g_cb = cb; 
  httpClient.request(req).then([](){
    g_cb();
  });
}

Затем я создаю делегат от единицы до функции «Загрузка». Ниже приведен код в единстве:

private delegate void LoadCallback();
[DllImport(strDllName, CallingConvention = CallingConvention.Cdecl)]
private static extern void Load(LoadCallback onLoadResult);

void Start() {
  m_onLoadConfig = new LoadCallback(OnLoadConfig);
  Load(m_onLoadConfig);
}

private LoadCallback m_onLoadConfig;
private void OnLoadConfig() {/*Some output*/}

После запуска вызван делегат, вывод - то, что я хочу, все вроде нормально.

Но когда я закрываю приложение, оно зависает на

mono_win32_msg_wait_for_multiple_objects_ex

Я думаю, что это ошибка моно? Но какой обходной путь?

...