Sdílet prostřednictvím


SqlCommand.CommandTimeout Vlastnost

Definice

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);
         }
      }
   }
}

Platí pro

Viz také