मैं एक अतुल्यकालिक विधि हैएसिंक्रोनस विधि से आउटपुट लौटने पर अनुशंसित विधि हस्ताक्षर?</p> <pre><code>public async Task<BitmapSource> GetBitmapAsync(double[] pixels); </code></pre> <p>चलो कहते हैं कि मैं भी इस वर्ग करते हैं:
public class PixelData
{
public double[] Pixels { get; }
}
अब मैं एक सुविधा एक BitmapSource
उत्पादन उत्पादन, ऊपर अतुल्यकालिक विधि का उपयोग करने के लिए विधि बनाना चाहते हैं काम। मैं ऐसा करने के लिए कम से कम तीन दृष्टिकोण के साथ आ सकता हूं, लेकिन यह मेरे लिए तुरंत स्पष्ट नहीं है कि मुझे एक दक्षता और विश्वसनीयता के दृष्टिकोण से कौन सा चयन करना चाहिए।
कोई सलाह दे सकता है; निम्नलिखित दृष्टिकोणों में से प्रत्येक के फायदे और दोष क्या हैं?
विकल्प ए एक तुल्यकालिक विधि है कि Task
की Result
रिटर्न बनाएँ:
public BitmapSource GetBitmap(PixelData pixelData)
{
return GetBitmapAsync(pixelData.Pixels).Result;
}
विकल्प बी एक तुल्यकालिक बनाएं (या इसे अतुल्यकालिक है?) विधि है कि Task<BitmapSource>
रिटर्न:
public Task<BitmapSource> GetBitmap(PixelData pixelData)
{
return GetBitmapAsync(pixelData.Pixels);
}
public async Task<BitmapSource> GetBitmapAsync(PixelData pixelData)
{
return await GetBitmapAsync(pixelData.Pixels);
}
से ज्यादा कुछ भी प्राप्त नहीं करता है और आप इस सुविधा विधि एसिंक्रोनस रूप से भी कॉल करने के लिए सक्षम होना चाहते हैं? यदि हां, तो मैं इसके चेहरे पर जो देख सकता हूं उससे पहले दो विकल्प इसे प्राप्त नहीं करेंगे, केवल तीसरी इच्छा होगी। –
जरूरी नहीं है (क्या मैं सुविधा विधि को असीमित रूप से कॉल करना चाहता हूं), लेकिन यदि यह करने का सबसे विश्वसनीय/सही तरीका है, तो हाँ। –
@AdamHouldsworth इस मामले में मेरी अज्ञानता के लिए खेद है, लेकिन विकल्प बी को निश्चित_ के लिए एक तुल्यकालिक विधि के रूप में संभाला जाएगा? तथ्य यह है कि यह 'कार्य <बिटमैप स्रोत>' देता है, क्या यह (ए) समकालिकता के संबंध में अप्रासंगिक है? –