मैं एक वर्ग डिजाइन करने की कोशिश कर रहा हूं जो अतुल्यकालिक प्रसंस्करण चिंताओं को जोड़ने की क्षमता को उजागर करता है। सिंक्रोनस प्रोग्रामिंग में, ऐसा लग सकता है
public class ProcessingArgs : EventArgs
{
public int Result { get; set; }
}
public class Processor
{
public event EventHandler<ProcessingArgs> Processing { get; }
public int Process()
{
var args = new ProcessingArgs();
Processing?.Invoke(args);
return args.Result;
}
}
var processor = new Processor();
processor.Processing += args => args.Result = 10;
processor.Processing += args => args.Result+=1;
var result = processor.Process();
एक अतुल्यकालिक दुनिया में, जहां प्रत्येक चिंता को किसी कार्य को वापस करने की आवश्यकता हो सकती है, यह इतना आसान नहीं है। मैंने इसे बहुत सारे तरीके से देखा है, लेकिन अगर कोई सबसे अच्छा तरीका है जो लोगों को मिल गया है तो मैं उत्सुक हूं। एक सरल संभावना है
public class Processor
{
public IList<Func<ProcessingArgs, Task>> Processing { get; } =new List<Func<ProcessingArgs, Task>>();
public async Task<int> ProcessAsync()
{
var args = new ProcessingArgs();
foreach(var func in Processing)
{
await func(args);
}
return args.Result
}
}
क्या कोई "मानक" है जिसे लोगों ने इसके लिए अपनाया है? ऐसा प्रतीत नहीं होता है कि मैंने एक लोकप्रिय दृष्टिकोण देखा है जो लोकप्रिय एपीआई में देखा गया है।
ProcessingArgs
कि मैं इस बारे में उलझन में था , इसलिए हम इसे साझा कर सकते हैं ।