我有一個C#應用程序需要使用傳統的Win32 DLL。該DLL幾乎是它自己的應用程序,它有對話,與硬件等進行操作。當這個DLL是進口和使用,有一對夫婦的出現的問題:如何保護導入的Win32 DLL從內存問題到.NET應用程序
- 拖動對話框(而不是Windows 系統對話框,但是由DLL創建的DLL)導致UI不會重新繪製。 此外,它會從各種UI 控件中生成一個存儲異常中的系統 。
- 表現令人難以置信的是 緩慢。
- 似乎沒有辦法 卸載DLL所以內存從未 得到清理。當我們關閉我們的 託管應用程序時,我們得到另一個內存 異常。
目前,我們導入的每個方法調用這樣:
[DllImport("dllname.dll",
EntryPoint = "MethodName", SetLastError = true,
CharSet = CharSet.Auto, ExactSpelling = true,
CallingConvention = CallingConvention.StdCall)]
我假設你已經測試過從非託管代碼調用DLL,它的行爲是否正確? – egrunin 2010-05-14 20:36:15
是的,我們用託管代碼取代的早期版本是非託管的。 – Eric 2010-05-15 01:19:53