SqlCommand.CommandTimeout Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub ustawia czas oczekiwania (w sekundach) przed zakończeniem próby wykonania polecenia i wygenerowaniem błędu.
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
Wartość właściwości
Czas w sekundach oczekiwania na wykonanie polecenia. Wartość domyślna to 30 sekund.
Implementuje
- Atrybuty
Uwagi
Wartość 0 wskazuje brak limitu (próba wykonania polecenia będzie czekać na czas nieokreślony).
Uwaga
Właściwość CommandTimeout zostanie zignorowana przez starsze wywołania metody asynchronicznej APM (Asynchronous Programming Model), takie jak BeginExecuteReader. Będzie on honorowany przez nowsze metody TAP (Task Asynchronous Programming), takie jak ExecuteReaderAsync.
CommandTimeoutnie ma wpływu, gdy polecenie jest wykonywane względem połączenia kontekstowego (SqlConnectionotwarte z "context connection=true" w parametry połączenia).
Uwaga
Ta właściwość to skumulowany limit czasu (dla wszystkich pakietów sieciowych, które są odczytywane podczas wywołania metody) dla wszystkich odczytów sieci podczas wykonywania polecenia lub przetwarzania wyników. Przekroczenie limitu czasu może nadal występować po powrocie pierwszego wiersza i nie obejmuje czasu przetwarzania użytkownika, tylko czasu odczytu sieciowego.
Na przykład z 30-sekundowym limitem czasu, jeśli Read wymaga dwóch pakietów sieciowych, wówczas ma 30 sekund do odczytania obu pakietów sieciowych. W przypadku ponownego wywołania Read wywołania będzie on miał kolejne 30 sekund do odczytania wszelkich potrzebnych danych.
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);
}
}
}
}