2010年10月4日 星期一

Windows Mobile 上部屬 dll 發生佔用的情況

在撰寫 Windows Mobile 的軟體時,
利用 Visual Studio 將專案部屬到機器上應該是必做的一件工作,
有時後我們會將特定的 class、function、resource 等做成額外的 dll
好讓我們能夠在不動到主程式的情況下做到快速加入新功能或換圖等需求。

部屬 dll 時有時會發生類似這樣的錯誤提示:無法部屬 xxx.dll,已被開啟或佔用,
但我們很確定剛才開啟的軟體已經確實關掉了,
至工作管理員內查看也的確沒有在執行,為何還會提示開啟或佔用呢?

原因是在 Windows Mobile 在開啟過某個 dll 後常常會將該 dll 鎖住,
至於怎麼個鎖法我並沒有深入研究,總之就是會被認為該 dll 被使用中,
最直觀的解法就是在確定你的部屬目錄是正確的以後,重開機即可成功部屬。

但重開機非常粍時,要是發生的頻率高一些,那真的會氣死人,
速度較快的解法是將該 dll 更名,例如你有個放關卡地圖的 map.dll 被佔用無法部屬,
就到安裝目錄下將該 map.dll 更名成 mapa.dll,map.dll 即可成功被部屬進機器內,
但不用想嚐試更名後刪掉它,想刪掉該 dll 還是得重開機,
因為更名後還是被認為是佔用中的資源,原因不明。

所以,發生更改 dll 程式後無法部屬的情況,先改名稱試試,別急著重開機或拔電池。

沒有留言:

張貼留言