मैं हाल ही में एक सब कुछ सीखने की कोशिश कर रहा हूं जो मैं कर सकता हूं। नेट मल्टीथ्रेडिंग। (इसमें बेहतर हो रहा है, लेकिन अभी भी ऐसा लगता है कि सीखने के लिए बहुत कुछ है)। अभी मैं एपीएम (अतुल्यकालिक प्रोग्रामिंग मॉडल) जो आमतौर पर इस के रूप में जाना जाता है पर ध्यान केंद्रित कर रहा हूँ:क्या यह असीमित प्रोग्रामिंग मॉडल को लागू करने का एक अच्छा तरीका है?
//non async method
public int DoSomeWork(int arg)
{
//do something and return result
}
//async version
public IAsyncResult BeginDoSomeWork(int arg, AsyncCallback callback, object @object)
{
}
public int EndDoSomeWork(IAsyncResult result)
{
}
अब मान लें कि मैं कुछ पुस्तकालय लिख रहा हूँ, और मैं कौन लेने वाली है किसी को भी इस कार्यक्षमता को बेनकाब करना चाहते हैं मेरी एपीआई, मैं इस पैटर्न को लागू करने के तरीकों के बारे में सोच रहा था। IAsyncResult इंटरफ़ेस को कार्यान्वित करना एक संभावना है, लेकिन यह काफी जटिल लगता है। मेरा सवाल है, अगर प्रतिनिधि का उपयोग करना एक स्वीकार्य समाधान है।
public class MyClass
{
private Func<int, int> func;
//non async method
public int DoSomeWork(int arg)
{
//do something and return result
}
//async version
public IAsyncResult BeginDoSomeWork(int arg, AsyncCallback callback, object @object)
{
this.func = new Func<int, int>(DoSomeWork);
var asyncResult = this.func.BeginInvoke(arg,callback,object);
return asyncResult;
}
public int EndDoSomeWork(IAsyncResult result)
{
return this.func.EndInvoke(result);
}
}
असल में, हर प्रतिनिधि इसे में सही पके हुए BeginXxx और EndXxx कार्यक्षमता है: क्या मुझे लगता है कि मतलब यह है। क्या इसका लाभ उठाना ठीक है और केवल IAsyncResult का पर्दाफाश करें, या इसमें कुछ गड़बड़ है जिसके बारे में मैं सोच नहीं रहा हूं।
यह सिर्फ एक उदाहरण था। वास्तविक कार्यान्वयन को अनदेखा करें (जो स्वीकार्य रूप से बेवकूफ और व्यर्थ दिखता है), मैं प्रतिनिधि का उपयोग करने के बारे में पूछ रहा हूं और यह IAsyncResult है। – BFree
क्योंकि एक सिंक्रोनस और एसिंक्रोनस संस्करण दोनों प्रदान किए जाते हैं क्योंकि क्लाइंट अभी भी वह निर्णय लेता है। ओपी इस बात से अधिक चिंतित है कि चुनी गई विधि एपीएम को लागू करने का एक अच्छा तरीका है या नहीं। – Crippledsmurf
@BFree, मैं अब सी। – Benny