我使用cpprest拥有一个非托管dll,并释放了一个非托管函数“ 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();
});
}
然后,我从单位创建一个委托给函数“ Load”。以下是统一的代码:
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
我认为这是单声道的错误?但是有什么解决方法?