Nekro
Терра инкогнита
- Сообщения
- 4,026
- Реакции
- 2,260
Здравствуйте форумчане, подскажите пожалуйста на счёт удаления таймера.
delete hTimer[client] - по идеи проверяет хендл на 0, приравнивает к null и удаляет. Но следующих тестовый код:
Выдаёт следующие ошибки, если не убрать комментарии, если же раскомментировать приравнение к null, то ошибок не будет и код будет отрабатывать как надо.
Так как правильно удалить таймер?
delete hTimer[client] - по идеи проверяет хендл на 0, приравнивает к null и удаляет. Но следующих тестовый код:
C++:
Handle
hTimer[MAXPLAYERS];
public void OnClientConnected(int client)
{
if(IsFakeClient(client))
return;
//hTimer[client] = null;
delete hTimer[client];
hTimer[client] = CreateTimer(2.0, CheckTimer, GetClientUserId(client));
}
public Action CheckTimer(Handle timer, any UserID)
{
int client = GetClientOfUserId(UserID);
CheckClient(client);
//hTimer[client] = null;
delete hTimer[client];
}
stock void CheckClient(int client)
{
PrintToChatAll("Приветствуем Вас [%N] !", client);
}
C++:
L 02/12/2022 - 18:16:28: [SM] Plugin "testTimer.smx" encountered error 23: Native detected error
L 02/12/2022 - 18:16:28: [SM] Invalid timer handle f7b00e9 (error 3) during timer end, displayed function is timer callback, not the stack trace
L 02/12/2022 - 18:16:28: [SM] Unable to call function "CheckTimer" due to above error(s).
Так как правильно удалить таймер?