Condividi tramite


SqlCommand.CommandTimeout Proprietà

Definizione

Ottiene o imposta il tempo di attesa (in secondi) prima di terminare il tentativo di eseguire un comando e generare un errore.

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

Valore della proprietà

Tempo di attesa in secondi per l'esecuzione del comando. Il valore predefinito è 30 secondi.

Implementazioni

Attributi

Commenti

Il valore 0 indica che non è previsto alcun limite (un tentativo di esecuzione di un comando attenderà per un periodo illimitato).

Nota

La CommandTimeout proprietà verrà ignorata dalle chiamate asincrone dei metodi asincroni di APM (Asynchronous Programming Model) precedenti, ad BeginExecuteReaderesempio . Verrà rispettata dai metodi TAP (Programmazione asincrona attività) più recenti, ExecuteReaderAsyncad esempio .

CommandTimeoutnon ha alcun effetto quando il comando viene eseguito su una connessione di contesto (un SqlConnection oggetto aperto con "context connection=true" nel stringa di connessione).

Nota

Questa proprietà è il timeout cumulativo (per tutti i pacchetti di rete letti durante la chiamata di un metodo) per tutte le letture di rete durante l'esecuzione o l'elaborazione dei risultati. Un timeout può comunque verificarsi dopo la restituzione della prima riga e non include il tempo di elaborazione dell'utente, ma solo il tempo di lettura della rete.

Ad esempio, con un timeout di 30 secondi, se Read sono necessari due pacchetti di rete, la lettura di entrambi i pacchetti di rete è di 30 secondi. Se si chiama Read di nuovo, saranno necessari altri 30 secondi per leggere i dati necessari.

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

Si applica a

Vedi anche