एक चल रहे पाठक को रोकना संभव है?क्या मैं पढ़ने के दौरान डेटा रीडर को बाधित कर सकता हूं?
परिदृश्य: मैं सेट 100000 डेटा की एक तालिका
CREATE TABLE stock (
uid bigint NOT NULL,
name text,
quantity integer,
x bytea,
y bytea
);
और एक सांत्वना आवेदन (.NET 4.0, Npgsql 2.0.11.0/2.0.11.92) डेटा पढ़ने
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;
}
मैं के लिए देखा है डेटा रीडर वास्तव में बंद नहीं कर सकता है। ऐसा लगता है कि डेटा रीडर पहले सभी पंक्तियों को पढ़ता है और बाद में सामान्य रूप से लौटाता है।
यह उदाहरण एक बड़ा अनुप्रयोग का सार है जहां उपयोगकर्ता एक बटन दबाकर डेटा रीडर को रोक देगा क्योंकि पढ़ने में बहुत लंबा समय लगता है।
मैं अपने परिदृश्य में बाहर छोड़ लॉग आउटपुट की है।मेरे परिदृश्य में डेटा रीडर के व्यवहार की जांच के लिए लॉग आउटपुट हमेशा आदेश के बाद प्रतीक्षा समय दिखाते हैं "((NpgsqlDataReader) पाठक) कुछ सेकंड के।()"। यह प्रतीक्षा समय वही है यदि मैं सभी पंक्तियों को पढ़ता। – Joerg
! सत्य और गलत झूठे मूल्यांकन। सच एक्सओआर झूठी सच का मूल्यांकन करेगा। –
यह सही है, इसे अपडेट करेगा। – oleksii