С# и потоки
В потоках и C# не разбираюсь, но что насчёт того, чтобы эта твоя Abort выполнялась в третьем потоке?
Что посоветуете сделать? Как сделать, чтобы он убился, не грузив при этом основную форму?Копать в сторону отмены синхронной операции соединения с БД. Если синхронное соединение нельзя отменить, то надо смотреть в сторону асинхронного соединения и его реализации. Какой механизм работы с БД у вас используется?
Почему бы не заменить один 100-секундный таймаут на 100 односекундных? А кнопка Abort, конечно же, должна флажок выставлять просто.
Ещё посмотри, может у коннекшена есть принудительный корректно обрабатываемый Close, который можно дёрнуть из другого потока, чтобы в первый вывалился из попытки по эксепшену, словил его и завершился.
Оставить комментарий
zrab
Есть поток, во время которого происходит подключение к БД. Максимальное время подключения (предел) 100 сек , и менять мы его не желаем. Зачастую подключается очень быстро, но иногда и за 100 сек подключиться не в состоянии.Также есть кнопка, убивающая поток (метод Abort ). Если поток пытается подключиться к быстроподключаемой БД, то и прерывается он очень быстро, но если к тем, к которым нельзя подключиться - то метод Abort выполняется целых 100 секунд, что сильно грузит основное приложение. Что посоветуете сделать? Как сделать, чтобы он убился, не грузив при этом основную форму?