SqlCommand.Cancel Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Versucht, die Ausführung eines SqlCommand abzubrechen.
public:
override void Cancel();
public override void Cancel ();
override this.Cancel : unit -> unit
Public Overrides Sub Cancel ()
Beispiele
Im folgenden Beispiel wird die Verwendung der Cancel-Methode gezeigt.
// <Snippet1>
using System;
using System.Data;
using Microsoft.Data.SqlClient;
using System.Threading;
class Program
{
private static SqlCommand m_rCommand;
public static SqlCommand Command
{
get { return m_rCommand; }
set { m_rCommand = value; }
}
public static void Thread_Cancel()
{
Command.Cancel();
}
static void Main()
{
string connectionString = GetConnectionString();
try
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
Command = connection.CreateCommand();
Command.CommandText = "DROP TABLE TestCancel";
try
{
Command.ExecuteNonQuery();
}
catch { }
Command.CommandText = "CREATE TABLE TestCancel(co1 int, co2 char(10))";
Command.ExecuteNonQuery();
Command.CommandText = "INSERT INTO TestCancel VALUES (1, '1')";
Command.ExecuteNonQuery();
Command.CommandText = "SELECT * FROM TestCancel";
SqlDataReader reader = Command.ExecuteReader();
Thread rThread2 = new Thread(new ThreadStart(Thread_Cancel));
rThread2.Start();
rThread2.Join();
reader.Read();
System.Console.WriteLine(reader.FieldCount);
reader.Close();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
static private string GetConnectionString()
{
// To avoid storing the connection string in your code,
// you can retrieve it from a configuration file.
return "Data Source=(local);Initial Catalog=AdventureWorks;"
+ "Integrated Security=SSPI";
}
}
// </Snippet1>
Hinweise
Wenn keine Grundlage für einen Abbruch vorhanden ist, wird keine Aktion ausgeführt. Wenn jedoch das Abbrechen für einen aktuell ausgeführten Befehl fehlschlägt, wird keine Ausnahme ausgelöst.
In einigen seltenen Fällen wird der CancelClose Befehl abbrechen nicht an SQL Server gesendet, ExecuteReaderund Canceldas Resultset kann nach dem Aufruf Closeweiterhin streamen. Um dies zu vermeiden, stellen Sie sicher, dass Sie aufrufen Cancel , bevor Sie den Leser oder die Verbindung schließen.