Oracle क्लाइंट विधियों के async संस्करणों को ओवरराइड नहीं करता है। वे डिफ़ॉल्ट DbCommand
. का उपयोग करते हैं कार्यान्वयन जो विधियों के गैर-async संस्करण कहते हैं।
उदाहरण के लिए, ExecuteNonQueryAsync
. का कार्यान्वयन है:
// System.Data.Common.DbCommand
public virtual Task<int> ExecuteNonQueryAsync(CancellationToken cancellationToken)
{
if (cancellationToken.IsCancellationRequested)
{
return ADP.CreatedTaskWithCancellation<int>();
}
CancellationTokenRegistration cancellationTokenRegistration = default(CancellationTokenRegistration);
if (cancellationToken.CanBeCanceled)
{
cancellationTokenRegistration = cancellationToken.Register(new Action(this.CancelIgnoreFailure));
}
Task<int> result;
try
{
result = Task.FromResult<int>(this.ExecuteNonQuery());
}
catch (Exception ex)
{
cancellationTokenRegistration.Dispose();
result = ADP.CreatedTaskWithException<int>(ex);
}
return result;
}
जैसा कि आप देख सकते हैं, यह बस ExecuteNonQuery
. को कॉल करता है हुड के तहत (ExecuteNonQueryAsync
. का नो-पैरामीटर अधिभार विधि के इस संस्करण को कहते हैं)।