मैं एक अतुल्यकालिक कंसोल ऐप बनाने की कोशिश कर रहा हूं जो एक संग्रह पर कुछ काम करता है। मेरे पास एक संस्करण है जो लूप के लिए समानांतर का उपयोग करता है एक और संस्करण जो एसिंक्स / वेट का उपयोग करता है। मुझे उम्मीद है कि समान्तर / प्रतीक्षित संस्करण समानांतर संस्करण के समान काम करेगा लेकिन यह समकालिक रूप से निष्पादित होता है। मैं क्या गलत कर रहा हूं?
class Program
{
static void Main(string[] args)
{
var worker = new Worker();
worker.ParallelInit();
var t = worker.Init();
t.Wait();
Console.ReadKey();
}
}
public class Worker
{
public async Task<bool> Init()
{
var series = Enumerable.Range(1, 5).ToList();
foreach (var i in series)
{
Console.WriteLine("Starting Process {0}", i);
var result = await DoWorkAsync(i);
if (result)
{
Console.WriteLine("Ending Process {0}", i);
}
}
return true;
}
public async Task<bool> DoWorkAsync(int i)
{
Console.WriteLine("working..{0}", i);
await Task.Delay(1000);
return true;
}
public bool ParallelInit()
{
var series = Enumerable.Range(1, 5).ToList();
Parallel.ForEach(series, i =>
{
Console.WriteLine("Starting Process {0}", i);
DoWorkAsync(i);
Console.WriteLine("Ending Process {0}", i);
});
return true;
}
}