SqlCommand.CommandTimeout Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá nebo nastaví čekací dobu (v sekundách) před ukončením pokusu o spuštění příkazu a generování chyby.
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
Hodnota vlastnosti
Doba v sekundách čekání na provedení příkazu. Výchozí hodnota je 30 sekund.
Implementuje
- Atributy
Poznámky
Hodnota 0 značí žádné omezení (pokus o provedení příkazu bude čekat neomezeně dlouho).
Poznámka
Vlastnost CommandTimeout bude ignorována staršími asynchronními voláními asynchronních metod APM (asynchronní programovací model), jako BeginExecuteReaderje . Bude oceněna novějšími metodami TAP (Task Asynchronous Programming), jako ExecuteReaderAsyncje .
CommandTimeoutnemá žádný vliv, pokud se příkaz spustí pro kontextové připojení (SqlConnectionv připojovací řetězec se otevře s řetězcem "context connection=true").
Poznámka
Tato vlastnost je kumulativní časový limit (pro všechny síťové pakety, které jsou přečtené během vyvolání metody) pro všechna čtení v síti během provádění příkazu nebo zpracování výsledků. K vypršení časového limitu může dojít i po vrácení prvního řádku a nezahrnuje dobu zpracování uživatele, pouze dobu čtení v síti.
Pokud například při vypršení Read časového limitu 30 sekund vyžaduje dva síťové pakety, má aplikace 30 sekund na přečtení obou síťových paketů. Pokud zavoláte Read znovu, bude mít další 30 sekund na přečtení všech požadovaných dat.
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);
}
}
}
}