Я выполняю вызовы 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
звонок.