আমি এমন একটি ক্লাস ডিজাইনের চেষ্টা করছি যা অ্যাসিক্রোনাস প্রসেসিংয়ের উদ্বেগ যুক্ত করার ক্ষমতা প্রকাশ করে। সিঙ্ক্রোনাস প্রোগ্রামিং এ এটির মতো দেখতে
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
}
}
লোকেরা এর জন্য কিছু "মানক" অবলম্বন করেছে? আমি জনপ্রিয় API গুলি জুড়ে পর্যবেক্ষণ করেছি এমন একটি ধারাবাহিক পদ্ধতির বলে মনে হচ্ছে না।
ProcessingArgs
নিচ্ছে তাই আমি সে সম্পর্কে বিভ্রান্ত ছিলাম।