Aracılığıyla paylaş


SqlCommand.Cancel Yöntem

Tanım

yürütmesini SqlCommand iptal etmeye çalışır.

public:
 override void Cancel();
public override void Cancel();
override this.Cancel : unit -> unit
Public Overrides Sub Cancel ()

Örnekler

Aşağıdaki örnekte yönteminin kullanımı gösterilmektedir Cancel .

// <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>

Açıklamalar

İptal etmek için hiçbir şey yoksa, hiçbir şey olmaz. Ancak, devam eden bir komut varsa ve iptal girişimi başarısız olursa, özel durum oluşturulmaz.

Bazı nadir durumlarda, çağrısı ExecuteReaderClose yaparsanız çağrısı yapmadan önce Cancel(örtük veya açıkça) çağrısı yapın ve ardından çağrısı Cancelyapın, cancel komutu SQL Server gönderilmez ve sonuç kümesi çağrısından Closesonra akışa devam edebilir. Bunu önlemek için okuyucuyu veya bağlantıyı kapatmadan önce arama Cancel yaptığınızdan emin olun.

Şunlara uygulanır