Dot-Net

為所有新命令對象設置自定義預設命令超時

  • August 6, 2013

預設的CommandTimeout值為 30 秒。您可以通過執行以下操作手動更改命令對象實例的值

Dim cmd As New System.Data.SqlClient.SqlCommand
cmd.CommandTimeout = 60

有沒有辦法指定不同的預設值,這樣所有新的命令對像在創建時都會在您的解決方案中自動具有此值?

據我所知沒有,沒有辦法改變這個預設值。SqlCommand 的建構子程式碼如下:

public SqlCommand()
{
   this.ObjectID = Interlocked.Increment(ref _objectTypeCount);
   this._commandTimeout = 30;
   this._updatedRowSource = UpdateRowSource.Both;
   this._prepareHandle = -1;
   this._rowsAffected = -1;
   this._notificationAutoEnlist = true;
   GC.SuppressFinalize(this);
}

一種可能的解決方法是使用預定義的 SqlCommand 作為參數傳遞給將 SqlCommand 作為參數的建構子。

所以你可以創建一個全域 SqlCommand (一個模板)

Dim commandTemplate60 = new SqlCommand()
commandTemplate60.Timeout = 60

然後當你需要一個超時為 60 秒的命令時

Dim cmd As New System.Data.SqlClient.SqlCommand(commandTemplate60)

不過,直接設置Timeout,好像工作量不大

引用自:https://stackoverflow.com/questions/18089812