Aracılığıyla paylaş


ISSAsynchStatus::GetStatus (OLE DB)

Şunlar için geçerlidir:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitik Platform Sistemi (PDW)Microsoft Fabric'te SQL veritabanı

OLE DB sürücüsünü indirme

Asenkron olarak yürütülen bir işlemin durumunu döndürür.

Sözdizimi

  
HRESULT GetStatus(  
        HCHAPTER hChapter,  
        DBASYNCHOP eOperation,  
        DBCOUNTITEM *pulProgress,  
        DBCOUNTITEM *pulProgressMax,  
        DBASYNCHPHASE *peAsynchPhase,  
        LPOLESTR *ppwszStatusText);  

Arguments

hBölüm[in]
Bölüm gücü. Eğer anket edilen nesne bir satır kümesi nesnesi değilse veya işlem bir bölüme uygulanmıyorsa, bu DB_NULL_HCHAPTER olarak ayarlanmalıdır, bu da sağlayıcı tarafından göz ardı edilir.

eOperation[in]
Asenkron durum istenen işlem. Aşağıdaki değer kullanılmalıdır:

DBASYNCHOP_OPEN-The tüketici, bir satır kümesinin asenkron açılışı veya popülasyonu ya da bir veri kaynak nesnesinin asenkron başlatılması hakkında bilgi ister. Sağlayıcı, doğrudan URL bağlamayı destekleyen OLE DB 2.5 uyumlu bir sağlayıcıysa, tüketici bir veri kaynağının, satır kümesinin, satırın veya akış nesnesinin asenkron başlatılması veya popülasyonu hakkında bilgi ister.

pulProgress[out]
PulProgressMax parametresinde belirtilen asenkron işlemin mevcut ilerlemesini beklenen maksimuma göre geri döndürmek için belleğe işaret edilen bir işaretçi. pulProgress'in anlamı hakkında daha fazla bilgi için peAsynchPhase'in tanımına bakınız.

Eğer pulProgress bir null işaretçiyse, ilerleme geri dönmez.

pulProgressMax[out]
pulProgress parametresinin beklenen maksimum değerini döndürmek için belleğe işaret edilen bir işaretçi. Bu değer, bu yönteme çağrılar arasında değişebilir. pulProgressMax'in anlamı hakkında daha fazla bilgi için peAsynchPhase'in açıklamasına bakınız.

Eğer pulProgressMax bir null işaretçiyse, beklenen maksimum değer döndürülmez.

peAsynchPhase[out]
Asenkron işlemin ilerleyişine dair ek bilgi iade etmek için belleğe işaret edilen bir işaretçi. Geçerli değerler şunlardır:

DBASYNCHPHASE_INITIALIZATION-The nesne başlatma aşamasındadır. pulProgress ve pulProgressMax argümanları tahmini bir tamamlanma oranını gösterir. Nesne henüz tam olarak maddileşmemiştir. Başka arayüzleri çağırmaya çalışmak başarısız olabilir ve tüm arayüz seti nesnede mevcut olmayabilir. Eğer asenkron işlem, satır güncelleyen, silen veya ekleyen bir komut için ICommand::Execute çağrılmasıyla ortaya çıkmış ve cParamSets 1'den büyükse, pulProgress ve pulProgressMax tek bir parametre kümesi veya tüm parametre setleri için ilerlemeyi gösterebilir.

DBASYNCHPHASE_POPULATION-The nesne nüfus evresindey. Sıra kümesi tamamen başlatılmış ve nesnede tüm arayüz yelpazesi mevcut olsa da, henüz sıralar kümesine doldurulmamış ek satırlar olabilir. pulProgress ve pulProgressMax, doldurulmuş satır sayısına göre belirlenebilir, ancak genellikle satır setini doldurmak için gereken zaman veya çabaya dayanır. Bu nedenle arayan bu bilgiyi sürecin ne kadar sürebileceğine dair kaba bir tahmin olarak kullanmalıdır, nihai satır sayısını değil. Bu faz yalnızca bir sıra kümesinin nüfusu sırasında geri döner; veri kaynağı nesnesinin başlatılmasında veya satır güncelen, silen veya ekleyen bir komutun çalıştırılmasında asla geri dönmez.

DBASYNCHPHASE_COMPLETE-All nesnenin asenkron işlemesi tamamlandı. ISSAsynchStatus::GetStatus metodu, işlemin sonucunu gösteren bir HRESULT döndürür. Genellikle, işlem senkron çağrılsaydı geri dönecek HRESULT olurdu. Eğer asenkron işlem, satır güncelleyen, silen veya ekleyen bir komut için ICommand::Execute çağrısının sonucu ise, pulProgress ve pulProgressMax , komutun etkilendiği toplam satır sayısına eşittir. cParamSets 1'den büyükse, bu uygulamada belirtilen tüm parametre kümelerinden etkilenen toplam satır sayısıdır. Eğer peAsynchPhase bir null işaretçiyse, durum kodu döndürülmez.

DBASYNCHPHASE_CANCELED-Asynchronous nesnenin işlenmesi iptal edildi. ISSAsynchStatus::GetStatus metodu DB_E_CANCELED döndürür. Eğer asenkron işlem, satır güncelleyen, silen veya ekleyen bir komut için ICommand::Execute çağrısının sonucu ise, pulProgress iptal öncesi komuttan etkilenen tüm parametre setleri için toplam satır sayısına eşittir.

ppwszStatusText[gir/kapat]
İşlemle ilgili ek bilgiler içeren bir işaretçi. Bir sağlayıcı, bu değeri bir operasyonun farklı unsurlarını ayırt etmek için kullanabilir - örneğin, erişilen farklı kaynaklar. Bu dize, veri kaynağı nesnesinin DBPROP_INIT_LCID özelliğine göre yerelleştirilir.

ppwszStatusText girişte null değilse, sağlayıcı ppwszStatusText tarafından tanımlanan belirli öğeyle ilişkili durumu döndürür. ppwszStatusTexteOperation öğesini belirtmiyorsa, sağlayıcı pulProgress ve pulProgressMax aynı değere ayarlanmış S_OK döndürür. Sağlayıcı, metin tanımlayıcısına dayalı olarak elemanlar arasında ayrım yapmazsa, ppwszStatusText'i NULL olarak ayarlar ve işlemin tamamıyla ilgili bilgileri döndürür; aksi takdirde, ppwszStatusText girişte null değilse, sağlayıcı ppwszStatusText'i dokunmadan bırakır.

ppwszStatusText girişte null ise, sağlayıcı ppwszStatusText işlemle ilgili daha fazla bilgi gösteren bir değere veya böyle bir bilgi yoksa veya ISSAsynchStatus::GetStatus metodu hata döndürürse NULL olarak ayarlar. ppwszStatusText girişte null olduğunda, sağlayıcı durum dizisi için bellek tahsis eder ve adresi bu belleğe geri döner. Tüketici, diziye ihtiyacı kalmadığında bu belleği IMalloc::Free ile serbest bırakır.

ppwszStatusText girişte NULL ise, herhangi bir durum dizisi döndürüldü ve sağlayıcı işlemin herhangi bir öğesi veya genel olarak işlem hakkında bilgi döndürür.

Dönüş Kodu Değerleri

S_OK
Yöntem başarılı bir şekilde geri döndü.

  • peAsynchPhase DBASYNCHPHASE_INITIALIZATION'ye eşitse, nesne henüz tam olarak başlatılmamıştır; başka arayüzleri çağırmaya çalışmak başarısız olabilir ve tüm arayüz seti nesnede mevcut olmayabilir.

  • peAsynchPhase DBASYNCHPHASE_POPULATION'ye eşitse, satır kümesi tamamen başlatılır ve nesnede tüm arayüz aralığı mevcuttur; Ancak, henüz sıralar setine doldurulmamış ek satırlar olabilir.

  • Eğer peAsynchPhase DBASYNCHPHASE_COMPLETE'ye eşitse, nesnenin tüm asenkron işlemesi tamamlanmış olur. Nesne tamamen başlatılmış ve doldurulmuştur.

DB_E_CANCELED
Asenkron işleme, sıra kümesi popülasyonu sırasında iptal edilmiştir. Nüfus durur, ancak sıralar zaten doldurulmuş sıralar için geçerli kalır.

Veri kaynağı nesnesinin başlatılması sırasında asenkron işleme iptal edildi. Veri kaynak nesnesi başlatılmamış bir durumdadır.

E_INVALIDARG
hChapter parametresi yanlış.

E_UNEXPECTED
ISSAsynchStatus::GetStatus yöntemi bir veri kaynağı nesnesinde çağrıldı ve IDBInitialize::Initialize veri kaynak nesnesinde çağrılmamıştır.

ISSAsynchStatus::GetStatus yöntemi bir satır kümesinde çağrıldı, ITransaction::Commit veya ITransaction::Abort çağrıldı ve nesne zombi durumundaydı.

ISSAsynchStatus::GetStatus yöntemi, başlatma aşamasında asenkron olarak iptal edilen bir satır kümesinde çağrılmıştır. Rowset zombi halinde.

E_FAIL
Sağlayıcıya özgü bir hata meydana geldi.

Açıklamalar

ISSAsynchStatus::GetStatus yöntemi, tam olarak IDBAsynchStatus::GetStatus yöntemi gibi davranır, ancak bir veri kaynağı nesnesinin başlatılması iptal edilirse, DB_E_CANCELED yerine E_UNEXPECTED döner (ancak ISSAsynchStatus::WaitForAsynchCompletion DB_E_CANCELED döndürür). Bunun nedeni, veri kaynağı nesnesinin iptal sonrası olağan zombi halinde bırakılmamasıdır; böylece daha fazla başlatma işlemi yapılabilir.

Eğer satır kümesi asenkron olarak başlatılırsa veya doldurulursa, bu yöntemi desteklemelidir.

Listelenen dönüş değerlerine ek olarak, ISSAsynchStatus::GetStatus , asenkron işlemi başlatan yöntemin döndürüleceği herhangi bir HRESULT'u döndürebilir ve işlemin başarısını veya başarısızlığını gösterir.

Bazı asenkron işlemler "bitti" ve "bitmemiş" dışında başka bir durum döndüremeyebilir. pulProgressMax'i 1 olarak belirlemeli, bu da tahminlerinin ya hep ya hiç ayrıntısını gösterecek, böylece cevapları ya 0/1 ya da 1/1 olacak.

Bir sağlayıcı, görevin tamamlanma derecesinin artan bir tahminini yansıtırsa, ardışık çağrılarda pulProgressMax'i değiştirebilir ve hatta önceki oranından daha küçük bir oran döndürebilir.

Sağlayıcı, daha fazla doğruluk garantisi vermek zorunda değildir, ancak makul tamamlanma tahminleri mümkün olduğunda bunu yapmaya teşvik edilir. Bu tür çabalar, kullanıcı arayüzü kalitesini artıracaktır çünkü bu fonksiyonun ana kullanımı muhtemelen kullanıcıya ilerleme geri bildirimi vermek olacaktır. Kullanıcı memnuniyeti, görünmez ve uzun süreli bir göreve verilen geri bildirim kalitesiyle artar.

ISSAsynchStatus::GetStatus ile başlatılmış bir veri kaynağı nesnesi veya doldurulmuş bir satır kümesi üzerinde çağrılmak veya DBASYNCHOP_OPEN dışında bir eOperation için bir değer vermek ise pulProgress ve pulProgressMax aynı değere ayarlanmış S_OK döndürür. ISSAsynchStatus::GetStatus yöntemi, satır güncelleyen, silen veya ekleyen bir komutun yürütülmesiyle oluşturulan bir nesnede çağrılırsa, hem pulProgress hem de pulProgressMax komutun etkilendiği toplam satır sayısını gösterir.

Ayrıca Bkz.

Asenkron İşlemler Gerçekleştirmek
ISSAsynchStatus (OLE DB)