none
傳遞委派到 Unmanaged 程式碼......錯誤訊息一問 RRS feed

  • 問題

  • 最近在製作鍵盤鎖定功能時發生了一個錯誤

    錯誤訊息:

    已在型別 '...RFIDReaderLIB+LowLevelKeyboardProc::Invoke' 的記憶體回收委派上進行回呼。這樣可能導致應用程式無法運作、損毀或遺失資料。傳遞委派到 Unmanaged 程式碼時,必須由 Managed 應用程式讓它們保持運作,直到確定不會再呼叫它們為止。

    錯誤的程式片段如下

      

    private const int WH_KEYBOARD_LL = 13; private const int WM_KEYDOWN = 0x0100; //private LowLevelKeyboardProc _proc = HookCallback; private static IntPtr _hookID = IntPtr.Zero; private delegate int LowLevelKeyboardProc(int nCode, Int32 wParam, IntPtr lParam); //<--錯在這

     [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
            private static extern int SetWindowsHookEx(int idHook,LowLevelKeyboardProc lpfn, IntPtr hMod, int dwThreadId);

    問題奇怪的是

    我用windows form程式或是單純的WPF專案內都沒問題

    但只要把這dll加到我現有要整合的WPF專案內,只要程式起來按下鍵盤任一件就會跳出這錯誤,請教一下這樣的錯誤資訊是什麼意思?我該怎麼除錯



    • 已編輯 dodolon 2013年7月18日 上午 10:37
    2013年7月18日 上午 09:57

解答