Выполнить метод одновременно - PullRequest
0 голосов
/ 03 декабря 2018

Потенциально странный запрос, но я пытаюсь симулировать вызов метода одновременно с конечной целью, заключающейся в том, что мне все равно, какой вызов метода достигнет его первым ... сам методсинхронный (на данный момент), и поэтому я знаю и принимаю, что он заблокирует, мне просто все равно, какой запрос делает его первым ...

это скорее упражнение на мысль, так что если я делаю что-то вродеэто, он делает то, что я думаю, что он делает?то есть запускать вызовы методов в разных потоках?

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;

это на самом деле что-то другое?

...