SqlCommand.CommandTimeout Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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);
}
}
}
}