SqlCommand.CommandTimeout 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置在终止尝试执行命令并生成错误之前的等待时间(以秒为单位)。
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
属性值
等待命令执行所需的时间(以秒为单位)。 默认为 30 秒。
实现
- 属性
注解
值为 0 表示没有限制, (尝试执行命令将无限期等待) 。
注意
较 CommandTimeout 旧的 APM (异步编程模型) 异步方法调用(如 BeginExecuteReader)将忽略 属性。 较新的 TAP (任务异步编程) 方法(如 ExecuteReaderAsync)将遵循它。
CommandTimeout当对上下文连接执行命令时, (SqlConnection 连接字符串) 中打开的 “context connection=true” 时,将不起作用。
注意
此属性是调用方法期间读取的所有网络数据包的累积超时 (,) 命令执行或处理结果期间的所有网络读取。 在第一行返回后,仍可能发生超时,并且不包括用户处理时间,仅包括网络读取时间。
例如,如果超时为 30 秒,则 Read 如果需要两个网络数据包,则有 30 秒的时间读取这两个网络数据包。 如果再次调用 Read ,它将有 30 秒的时间读取它所需的任何数据。
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);
}
}
}
}