Что произойдет, если я вызову Thread.Abort()
(в C# /. NET) в потоке, который в настоящее время выполняет команду ODBC (в частности, против MSSQL и Oracle, но также и вообще)? Будет ли отменена команда? Будет ли сервер БД распознавать, что на другом конце соединения нет ничего и убить процесс (опять же, в частности, MSSQL и Oracle)? Или мне нужно явно позвонить Cancel()
по соединению в первую очередь?C# Thread.Abort() + ODBC Connection
Моя цель - обеспечить безопасность базы данных, к которой я подключаюсь, если худшее должно произойти с моим приложением (или худшее, что я могу поймать и ответить, например, выключение системы и т. Д.).
Я хотел бы запрограммировать защиту и попытаться выпустить Cancel(), если это вообще возможно, но я все равно хотел бы знать поведение.
Я думаю, что вам нужно называть отмену –
'Thread.Abort()' должен работать только тогда, когда управляемый код управляется ... так что на самом деле это зависит от того, как создается драйвер, если это управляемый код или он неуправляемый код. Если драйвер неуправляемого кода, он невосприимчив к 'Thread.Abort()' (см., Например, http://stackoverflow.com/q/2781484/613130) – xanatos
См. Например http://stackoverflow.com/q/ 1401532/613130 для лиц, которые пытались «Thread.Abort()' vs 'SqlDataAdapter' (подсказка:' SqlDataAdapter' won :-)) – xanatos