Может кто-нибудь объяснить мне разницу между этими двумя блоками.Два параллельных аргумента ожидания
Это один выполняет около 2 секунд (это означает, что Awaits являются асинхронными.):
[Test]
public async void TestAwait()
{
var sw = new Stopwatch();
sw.Start();
var task = TestAwaiter(5, 2000).ConfigureAwait(false);
var task1 = TestAwaiter(10, 2000).ConfigureAwait(false);
var i = await task;
var j = await task1;
Console.WriteLine(i+j);
Console.WriteLine(Math.Round(sw.Elapsed.TotalSeconds, 0));
Assert.AreEqual(Math.Round(sw.Elapsed.TotalSeconds, 0), 2);
sw.Stop();
}
public async Task<int> TestAwaiter(int num, int waitTimeSec)
{
await Task.Delay(waitTimeSec).ConfigureAwait(false);
return num;
}
Этот выполняет около 4 секунд (это означает, что Awaits синхронны.)
[Test]
public async void TestAwait()
{
var sw = new Stopwatch();
sw.Start();
var i = await TestAwaiter(5, 2000).ConfigureAwait(false);
var j = await TestAwaiter(10, 2000).ConfigureAwait(false);
Console.WriteLine(i+j);
Console.WriteLine(Math.Round(sw.Elapsed.TotalSeconds, 0));
Assert.AreEqual(Math.Round(sw.Elapsed.TotalSeconds, 0), 2);
sw.Stop();
}
public async Task<int> TestAwaiter(int num, int waitTimeSec)
{
await Task.Delay(waitTimeSec).ConfigureAwait(false);
return num;
}
I не могут понять, как они отличаются. Зачем назначать ожидание задачи позже, тогда ее создание влияет на порядок выполнения.
Глупый, глупый меня. – schizofreindly
Какой тестовый бегун вы используете? Как этот тестовый бегун отслеживает запущенную задачу, если вы тестируете методы «async void»? –
NUnit работает безупречно. – schizofreindly