Потенциально странный запрос, но я пытаюсь симулировать вызов метода одновременно с конечной целью, заключающейся в том, что мне все равно, какой вызов метода достигнет его первым ... сам методсинхронный (на данный момент), и поэтому я знаю и принимаю, что он заблокирует, мне просто все равно, какой запрос делает его первым ...
это скорее упражнение на мысль, так что если я делаю что-то вродеэто, он делает то, что я думаю, что он делает?то есть запускать вызовы методов в разных потоках?
Task<MyObject> t1 = Task.Run(() => MethodToRun("param1"));
Task<MyObject> t2 = Task.Run(() => MethodToRun("param2"));
await Task.WhenAll(t1, t2); // block, and wait for results, i think?
var r1 = t1.Result;
var r2 = t2.Result;
или это всегда будет заканчиваться тем, что сначала будет выполняться t1
независимо от того?
я думал о добавлении задач в список, а затемпнуть их всех возможно ...
var taskList = new List<Task<MyObject>>
{
new Task<MyObject>(() => MethodToRun("param1"));
new Task<MyObject>(() => MethodToRun("param2"));
};
Parallel.ForEach(taskList, t => t.Start());
await Task.WhenAll(taskList);
var r1 = taskList[0].Result;
var r2 = taskList[1].Result;
это на самом деле что-то другое?