Могу ли я положить освобождение системных ресурсов в финализаторе в C #? - PullRequest
0 голосов
/ 25 мая 2018

Я выполняю вызовы Win API в моей программе, и некоторые из них предполагают необходимость освобождения ресурсов.Могу ли я поместить такое освобождение в финализатор и быть уверенным, что оно будет вызвано?

Вот как я сейчас поступаю со статическими методами:

class KeyboardListener
    {

        static KeyboardListener() {
            AppDomain.CurrentDomain.ProcessExit += new EventHandler(OnProcessExit);
            Install(keyboardHook);
        }

        static void OnProcessExit(object sender, EventArgs e)
        {
            Uninstall();
        }



        static void Install(KeyboardHookDelegate proc)
        {
            using (Process curProcess = Process.GetCurrentProcess())
            using (ProcessModule curModule = curProcess.MainModule)
            {
                keyboardHookID = SetWindowsHookEx(WH_KEYBOARD_LL, proc,
                    GetModuleHandle(curModule.ModuleName), 0);
            }
        }

        static void Uninstall()
        {
            UnhookWindowsHookEx(keyboardHookID);
        }

Теперь я хочу переписать его настатика и желающие решить, куда поставить Uninstall звонок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...