Aracılığıyla paylaş


Hata İşleme (RPC)

Zaman uyumlu RPC'de istemci, başarılı veya hata koduyla döndüren bir uzak çağrı yapar. Zaman uyumsuz RPC, bir çağrının başarısız olması için daha fazla fırsat sağlar ve bu hatalar nerede ve ne zaman oluştuklarına bağlı olarak farklı şekilde işlenir. Aşağıdaki tabloda, bir çağrının başarısız olmanın yolları ve nasıl işlendiği açıklanmaktadır.

İstemci Tarafı Temizleme

Hata belirtisi Temizleme
İstemci, uzak yordamı çağırdığında bir özel durum yakalar. RPC API çağrısı gerekmez. Tüm RPC durumu temizlendi.
İstemci bir çağrı tamamlama bildirimi alır, ancak rpcAsyncCompleteCallçağırdığında bir hata kodu alır. RPC API çağrısı gerekmez. Tüm RPC durumu temizlendi.
İstemci, iptal edici olmayan veya iptali durduran iptal sorunları. İstemci bildirim için beklemeli ve bildirim geldiğinde RpcAsyncCompleteCallçağırmalıdır.

 

Sunucu tarafı temizlemede önemli bir kavram, teslim noktasıdır. Zaman uyumsuz bir çağrının sunucu tarafında işlenmesi sırasında, bazı işlemler genellikle çağrıyı alan iş parçacığında (dağıtıcı iş parçacığıolarak da bilinir) gerçekleştirilir ve isteğe bağlı olarak dağıtıcı iş parçacığı bellek bloğuna yeterli durumu koyar ve çağrı için işlemeye devam etmek için başka bir iş parçacığına (çalışan iş parçacığıolarak da bilinir) sinyal gönderir. Dağıtıcı iş parçacığının çalışan iş parçacığının teslim noktası olarak adlandırıldığını başarıyla işaret ettiği an.

Sunucu Tarafı Temizleme

Hatayla karşılaşıldı Temizleme
Teslim noktasından önce. Özel durum oluşturma. RpcAsyncCompleteCallçağrısı gerekmez.
Teslim noktasından sonra. RpcAsyncAbortCallçağırın veya hata önemli değilse ve sonuçlar istemciye hala döndürülebiliyorsa RpcAsyncCompleteCall. rpcasyncCompleteCall işlev çağrısı başarısız olursa, RPC çalışma zamanı parametreleri serbest bırakın. Kullanıcının bu parametrelere erişmemesi gerekir. Dağıtıcı iş parçacığı, artık aramayı güvenli bir şekilde durduramadığından, el bırakma noktasından sonra başarısız olabilecek önemli bir işlem gerçekleştirmemelidir. Özel olarak, el bırakma noktasından sonra bir özel durum oluşturmamalıdır, aksi durumda sunucu kilitlenebilir.

 

Kanallar için Özel Hata İşleme Durumları

Kanallar kullanılırken hata işlemeye yönelik özel durumlar vardır. Aşağıdaki listede hatanın kaynağı ve hatanın nasıl işleneceğini açıklanmaktadır.

Hata kaynağı İşlenme şekli
İstemci göndermeyi çağırır ve çağrı başarısız olur. RPC API çağrısı gerekmez. Tüm RPC durumu temizlendi.
kanallarındakiboşaltılmadan önce istemci rpcasyncCompleteCallçağırır. Çağrı uygun kanal doldurma hata koduyla başarısız oluyor.
İstemci çağrıları çeker ve çağrı başarısız olur. RPC API çağrısı gerekmez. Tüm RPC durumu temizlendi.
İstemci veya sunucu, yanlış sırada gönderme veya çekme çağrısında bulunur. Çalışma zamanı, kanal doldurma hata durumunu döndürür.
Sunucu gönderme veya çekme çağrıları gönderir ve çağrı başarısız olur. Gönderme bir hata kodu döndürür. RpcAsyncCompleteCallçağrısı gerekmez.
Kanallar boşaltılmadan önce sunucu rpcasynccompletecall çağırır. Kanal çağrısı bir boru doldurma hatası durumu döndürür.
Gönderme işleminden sonra bir alma işlemi başarısız olur. Sunucu kanal verilerini almak için çekmeyi bir sonraki çağırışında bir hata döndürülür.