SqlCommand.Cancel Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mencoba membatalkan eksekusi SqlCommand .
public:
override void Cancel();
public override void Cancel ();
override this.Cancel : unit -> unit
Public Overrides Sub Cancel ()
Contoh
Contoh berikut menunjukkan penggunaan Cancel metode .
// <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>
Keterangan
Jika tidak ada yang dibatalkan, tidak ada yang terjadi. Namun, jika ada perintah dalam proses, dan upaya untuk membatalkan gagal, tidak ada pengecualian yang dihasilkan.
Dalam beberapa kasus yang jarang terjadi, jika Anda memanggil ExecuteReader, maka panggil Close (secara implisit atau eksplisit) sebelum memanggil Cancel, dan kemudian memanggil Cancel, perintah batalkan tidak akan dikirim ke SQL Server dan tataan hasil dapat terus mengalir setelah Anda memanggil Close. Untuk menghindari hal ini, pastikan Anda menelepon Cancel sebelum menutup pembaca atau koneksi.