SqlCommand.Cancel Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Pokusí se zrušit spuštění .SqlCommand
public:
override void Cancel();
public override void Cancel ();
override this.Cancel : unit -> unit
Public Overrides Sub Cancel ()
Příklady
Následující příklad ukazuje použití Cancel metody .
// <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>
Poznámky
Pokud není co zrušit, nic se neděje. Pokud je však příkaz v procesu a pokus o zrušení se nezdaří, nevygeneruje se žádná výjimka.
V některých výjimečných případech, pokud zavoláte ExecuteReader, zavoláte Close (implicitně nebo explicitně) před voláním Cancela pak zavoláte Cancel, příkaz cancel se SQL Server neodesílají a sada výsledků se může streamovat i po volání Close. Abyste tomu předešli, nezapomeňte před ukončením čtečky nebo připojení volat Cancel .