Aszinkron műveletek

Az adatbázis-műveletek végrehajtása jelentős időt vehet igénybe. A felhasználói felület válaszkészségének megőrzése vagy a kérésszál blokkolásának elkerülése érdekében a parancs szinkron befejeződésére való várakozás helyett aszinkron adatbázis-metódusokat használjon.

Telepítse a Microsoft. Data.SqlClient NuGet-csomag SQL-ügyfélkódhoz. Új alkalmazások esetén használja OpenAsync és a ExecuteNonQueryAsync, ExecuteReaderAsync és ExecuteXmlReaderAsync metódusokat await használatával. Ezek a metódusok aszinkron bemenetet/kimenetet (I/O) hajtanak végre anélkül, hogy háttérszálat kellene létrehoznia.

A Microsoft.Data.SqlClient az ebben a szakaszban ismertetett visszahívási, várakozási és pollingmintákat is támogatja. A BeginExecuteNonQuery, BeginExecuteReader és BeginExecuteXmlReader metódusok párba állnak a EndExecuteNonQuery, EndExecuteReader és EndExecuteXmlReader metódusokkal. Ne adja hozzá a(z) Asynchronous Processing=true elemet a kapcsolati karakterlánchoz; a Microsoft.Data.SqlClient nem támogatja ezt a kulcsszót.

Megjegyzés:

Új kód esetén használja a feladatalapú aszinkron mintát. Az ebben a szakaszban szereplő példák a visszahívást, várakozási leírókat vagy lekérdezést igénylő alkalmazások támogatott Begin/End mintáját mutatják be.

Tartsa életben az egyes kapcsolatokat és parancsokat, amíg a saját művelete be nem fejeződik. Kezelje a kivételeket, amikor meghívja a megfelelő End metódust, vagy megvárja a Taskot. Asztali alkalmazásokban a vezérlőket csak a felhasználói felület száláról frissítse.

Ebben a részben

Windows-alkalmazások visszahívásokkal Egy példa bemutatja, hogyan hajthat végre biztonságosan egy aszinkron parancsot, és hogyan kezeli megfelelően az űrlapokkal és annak tartalmával való interakciót egy külön szálból.

ASP.NET alkalmazások várakozási leírók használatával Ez a példa bemutatja, hogyan hajthat végre egyszerre több parancsot egy ASP.NET oldalról, és hogyan kezelheti a műveleteket az összes parancs befejezése után várakozási leírók segítségével.

Lekérdezés a konzolalkalmazásokban Egy példa bemutatja, hogyan használható a lekérdezés egy konzolalkalmazás aszinkron parancsvégrehajtásának befejezésére. Ez a technika egy osztálytárban vagy más, felhasználói felület nélküli alkalmazásban is érvényes.

Lásd még