2016年12月23日 星期五

LoaderLock error

VS2015關閉LoaderLock訊息回報被改到
Debug->Windows->Exception Settings
Managed Debugging Assistants>LoaderLock這個地方
以前版本的VS是在
Debug -> Exceptions
Managed Debugging Assistants>LoaderLock
對於所有遇到的不明loader lock錯誤都可以從這邊關掉。不只在VS裡面,compile出來的執行檔也不會回報這類錯誤。



我們這隻程式發生這個bug在關閉Form後,後來找出原因是因為把所有的MxxFree都放在一個try..catch當中。MAppFree()是最後呼叫的,但他前面的MSysFree()很有可能會失敗。當MSysFree()呼叫失敗,MAppFree()也沒有被執行,所以會產生錯誤。解法就是將MAppFree()放到Final當中或是try..catch..以外,保證會被執行就OK了!

解這個bug意外收穫了不少

沒有留言:

張貼留言