SqlCommand.CommandTimeout Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает время ожидания (в секундах), прежде чем завершать попытку выполнить команду и создать ошибку.
public:
virtual property int CommandTimeout { int get(); void set(int value); };
public:
property int CommandTimeout { int get(); void set(int value); };
public override int CommandTimeout { get; set; }
[System.Data.DataSysDescription("DbCommand_CommandTimeout")]
public int CommandTimeout { get; set; }
member this.CommandTimeout : int with get, set
[<System.Data.DataSysDescription("DbCommand_CommandTimeout")>]
member this.CommandTimeout : int with get, set
Public Overrides Property CommandTimeout As Integer
Public Property CommandTimeout As Integer
Значение свойства
Время ожидания выполнения команды в секундах. Значение по умолчанию — 30 секунд.
Реализации
- Атрибуты
Комментарии
Значение 0 не указывает ограничение (попытка выполнить команду будет ждать неограниченное время).
Замечание
Свойство CommandTimeout будет игнорироваться более старыми вызовами асинхронного метода APM (асинхронная модель программирования), например BeginExecuteReader. Он будет учитываться более новыми методами TAP (асинхронное программирование задач), такими как ExecuteReaderAsync.
CommandTimeout не действует, если команда выполняется в контекстном соединении ( SqlConnection открытое с "context connection=true" в строке подключения).
Замечание
Это свойство является накопительным временем ожидания (для всех сетевых пакетов, которые считываются во время вызова метода) для всех сетевых операций чтения во время выполнения команды или обработки результатов. Время ожидания по-прежнему может возникать после возврата первой строки и не включает время обработки пользователей, только время чтения сети.
Например, при истечении 30 секунд, если Read требуется два сетевых пакета, для чтения обоих сетевых пакетов требуется 30 секунд. При повторном вызове Read потребуется еще 30 секунд для чтения всех необходимых данных.
using System;
using System.Data.SqlClient;
///
public class A {
///
public static void Main() {
string connectionString = "";
// Wait for 5 second delay in the command
string queryString = "waitfor delay '00:00:05'";
using (SqlConnection connection = new SqlConnection(connectionString)) {
connection.Open();
SqlCommand command = new SqlCommand(queryString, connection);
// Setting command timeout to 1 second
command.CommandTimeout = 1;
try {
command.ExecuteNonQuery();
}
catch (SqlException e) {
Console.WriteLine("Got expected SqlException due to command timeout ");
Console.WriteLine(e);
}
}
}
}