powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / не меняется TimeOut при формировании отчета
8 сообщений из 8, страница 1 из 1
не меняется TimeOut при формировании отчета
    #39857138
Фотография alex_ll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В приложении WindowsForm формирую отчет. Один из запросов в зависимости от заданного периода, иногда выполняется около минуты (проверял в Mamagement Studio) соответственно формирование отчета прекращается по исключению исключение"Истекло время ожидания. Время ожидания истекло до завершения операции или сервер не отвечает" По умолчанию свойство Connection.ConnectionTimeout стояло 15 сек. И таймаут срабатывал правильно. Я указал в строке подключения "Connect Timeout = 600" и Connect Timeout = 0, в обоих случаях в отладчике свойство Connection.ConnectionTimeout равно 600 и 0 соответственно, но отчет после 30 секунд вылетает по тому же самому исключению. Где копать, кроме оптимизации запроса?
...
Рейтинг: 0 / 0
не меняется TimeOut при формировании отчета
    #39857141
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
connect timeout это на соединение , а не выполнение. нужно искать command timeout
...
Рейтинг: 0 / 0
не меняется TimeOut при формировании отчета
    #39857146
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SqlCommand.CommandTimeout Property (System.Data.SqlClient) | Microsoft Docs
Gets or sets the wait time before terminating the attempt to execute a command and generating an error.
Property Value
Int32
The time in seconds to wait for the command to execute. The default is 30 seconds.
Remarks
A value of 0 indicates no limit (an attempt to execute a command will wait indefinitely).
Ну, и для сравнения:
SqlConnection.ConnectionTimeout Property (System.Data.SqlClient) | Microsoft Docs
Gets the time to wait while trying to establish a connection before terminating the attempt and generating an error.
...
Рейтинг: 0 / 0
не меняется TimeOut при формировании отчета
    #39857150
Фотография alex_ll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One, искал. У sp_моя_процедураTableAdapter есть только Connection и Connection.ConnectionTimeout, а CommandTimeout нет свойства. Тем более не понятно где его поменять.
...
Рейтинг: 0 / 0
не меняется TimeOut при формировании отчета
    #39857158
Фотография alex_ll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О нашел свойство моя_Процедура.Adapter.SelectCommand.CommandTimeout = 30, осталось только поменять его. Потому как перед методом Fill оно еще не существует.
...
Рейтинг: 0 / 0
не меняется TimeOut при формировании отчета
    #39857764
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_llО нашел свойство моя_Процедура.Adapter.SelectCommand.CommandTimeout = 30, осталось только поменять его. Потому как перед методом Fill оно еще не существует.

оно существует со значением по умолчанию
...
Рейтинг: 0 / 0
не меняется TimeOut при формировании отчета
    #39858467
Фотография alex_ll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, можно сделать как советуют умные люди новый класс на основе существующего и прописать метод меняющий параметр .Adapter.SelectCommand.CommandTimeout.

Но если кому надо срочно, что бы заработало, а потом не спеша сделать правильно, то

переписать
Код: c#
1.
this.ВашАдаптер_TableAdapter.Fill()


на
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 try
            {
                this.ВашАдаптер_TableAdapter.Fill();
    
            }
            catch 
            {
                this.ВашАдаптер_TableAdapter.Adapter.SelectCommand.CommandTimeout = 0;
                this.ВашАдаптер_TableAdapter.Fill();
            }



Тут фишка в том, что до вызова метода Fill этот параметр null, а после вызова определен по умолчанию (у меня был 30)
...
Рейтинг: 0 / 0
не меняется TimeOut при формировании отчета
    #39858553
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_llТут фишка в том, что до вызова метода Fill этот параметр null, а после вызова определен по умолчанию (у меня был 30)
30 он у всех, см. документацию. А то, что null до вызова Fill - это потому, что до первого вызова Fill у адаптера собственно команды (SqlCommand) нет, она сама равна null.
alex_llВ общем, можно сделать как советуют умные люди новый класс на основе существующего и прописать метод меняющий параметр .Adapter.SelectCommand.CommandTimeout.
Можно заполнять данные как угодно, хоть через даппер в виде коллекций, потом и программно собирать эти данные вместе для привязки к источникам данных отчёта. Кода, в общем-то, совсем немного. Это позволяет вообще отказаться от сгенеренных адаптеров, и полностью управлять процессом загрузки данных - например, сделать её асинхронной. Я сам лично дизайнером датасета, если возникает нужда иметь дело с rdl, пользуюсь только для привязки полей отчета к данным, и всё - адаптеров нет, сами DataTable's некогда не заполняются, потому что отчет получает данные другим способом.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / не меняется TimeOut при формировании отчета
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]