¿Es posible detener un lector en funcionamiento?¿Puedo interrumpir el lector de datos durante la lectura?
Escenario: Tengo una tabla con los datos de 100000 establece
CREATE TABLE stock (
uid bigint NOT NULL,
name text,
quantity integer,
x bytea,
y bytea
);
y una aplicación de consola (.NET 4.0, Npgsql 2.0.11.0/2.0.11.92) para la lectura de datos
conn = new NpgsqlConnection("Server=localhost;Database=postgres;User id=postgres;password=postgres;Timeout=600;CommandTimeout=600;ConnectionLifeTime=600;");
using (new ConnectionOpen(conn))
using (var ta = conn.BeginTransaction(IsolationLevel.Snapshot))
{
IDbCommand command = conn.CreateCommand("SELECT * from stock;");
command.SetTransaction(ta);
IDataReader reader = command.ExecuteReader();
int n = 0;
while (!reader.IsClosed && reader.Read())
{
n++;
if (n > 5000)
{
if (reader != null)
{
((NpgsqlDataReader)reader).Close();
}
}
}
((NpgsqlDataReader)reader).Dispose();
reader = null;
}
I han observado que el lector de datos realmente no puede detenerse. Parece que el lector de datos lee todas las filas primero y luego regresa normalmente.
Este ejemplo es un resumen de una aplicación más grande donde el usuario detendrá el lector de datos presionando un botón porque la lectura lleva demasiado tiempo.
Tengo dejar de lado las salidas de registro en mi escenario.Las salidas de registro para verificar el comportamiento del lector de datos en mi escenario muestran siempre un tiempo de espera después del comando "((lector NpgsqlDataReader)) .Cierre()" de algunos segundos. Este tiempo de espera es casi el mismo si leyera todas las filas. – Joerg
! Verdadero && falso se evalúa como falso. ! verdadero XOR falso se evaluaría como verdadero. –
correcto, actualizará esto. – oleksii