我使用P / Invoke调用包装本机API。对于错误处理,我使用以下方法:
换句话说,流程是这样的:
Managed Method => (P/Invoke) Unmanaged Function => Managed Callback => Throw Exception.
当我测试这个方法时,我可以在第一个托管方法中成功捕获异常。但是,我并非100%确定这不会对堆栈或泄漏内存造成任何副作用。
使用此方法是否安全?如果没有,是否有任何其他方法来指示错误(可能包括堆栈跟踪)而不会使用P / Invoke混乱API?
P.S。我可以访问本机代码。
答案 0 :(得分:1)
简短回答:是的,这是安全的。
在某些条件下:
例如,您无法启动新线程并在新线程中调用托管回调,回调抛出的异常肯定会终止您的应用程序。