У меня есть _COM_SMARTPTR, ICore, который ведет себя так, как ожидалось, пока я не позволю программе простаивать , обычно 10 минут достаточно, возникает исключение _com_error и происходит сбой:
{program.exe!_com_error::`скалярный удаляющий деструктор '(unsigned int)
Я не знаю, что делать с этой ошибкой, поскольку раньше ее не видел.
При возникновении сбоя указатель ICore выполняет COM-вызов для получения «SetWaitCursor()»
Код: Выделить всё
inline VARIANT_BOOL ICore::SetWaitCursor ( int iWaitCursorOp ) {
VARIANT_BOOL _result = 0;
HRESULT _hr = raw_SetWaitCursor(iWaitCursorOp, &_result);
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
return _result;
}
_hr принимает значение «0x80010100: сбой системного вызова».
По какой-то причине я не могу войти в raw_SetWaitCursor, чтобы увидеть поведение либо из-за упрямства Visual Studio, что по какой-то причине случалось раньше, либо из-за того, что она просто не вызывается.
Возможен ли по какой-то причине тайм-аут в 10 минутах от COM/ATL или что-то еще? Кто-нибудь знает, что скалярная ошибка пытается мне сказать, чтобы я мог понять это сам? Может ли это быть как-то связано с резьбой? Если да, то какой может быть пример?
Опять же, изначально код работает так, как ожидалось. Но если пользователь решит отойти на 10 или более минут, я получаю следующее:
0x80010100: Ошибка системного вызова.
{program. exe!_com_error::`скалярный удаляющий деструктор'(unsigned int)
Подробнее здесь: https://stackoverflow.com/questions/781 ... 10-minutes