Поскольку, по моим прочтениям, вам было бы достаточно легко проверить сценарий, чтобы выяснить это для себя, я не совсем уверен, что на самом деле понимаю, о чем вы спрашиваете.Тем не менее, вот как I проверит это:
static void Main(string[] args)
{
Task task = new Task(() => WriteLine("task!"));
task.Wait(1000);
WriteLine("Done waiting");
}
И, конечно же, если вы запустите приведенный выше код, вы обнаружите, что даже если вы никогда не запускали задачувызов Wait()
все равно истечет через 1 секунду.
Другими словами, как сказано в документации, метод ожидает до времени, указанного для завершения задачи, а затем возвращается.
Учитывая, что метод Wait()
вернется, даже если задача даже не была запущена, он также вернется, если задача была запущена, но у нее еще не было возможности выполнить какой-либо код.Похоже, что на самом деле это тот сценарий, о котором вы спрашивали.
Независимо от того, запускается задача или нет, это не имеет значения (хотя на практике у нас почти никогда не бывает незапущенных задач… хорошие идиоматические практики программирования на C # диктуют, что вы получаете толькоTask
объект из механизмов, которые возвращают уже запущенную задачу, например Task.Run()
или вызов метода async
).
Или посмотрите на это так: если ваша мама говорит вам: «ЯВы подадите ужин, как только вы закончите убирать свою комнату, но не позднее, чем через 30 минут ", как вы думаете, она примет во внимание, действительно ли вы начали убирать вашу комнату илине?Нет, она собирается подать ужин через 30 минут, несмотря ни на что.
То же самое с .NET.Неважно, запустили ли вы задачу или нет, просто она не была выполнена за отведенное время.