Встроенная временная переменная VS прерывает асинхронную функцию - PullRequest
0 голосов
/ 14 марта 2019

Может ли кто-нибудь объяснить следующее поведение?

Обычная асинхронная функция, которая работает, как и ожидалось, при вызове из обработчика асинхронных событий:

private async Task SomethingAsync()
        {
            Task[] tasks = new Task[2];
            tasks[0] = this.SomeTaskOne();
            tasks[1] = this.SomeTaskTwo();
            await Task.WhenAny(tasks);
        } 

После внушительного предложения VS (Быстрое действие), которое прерывается:

    (new Task[2])[0] = this.SomeTaskOne();
    (new Task[2])[1] = this.SomeTaskTwo();
    await Task.WhenAny(new Task[2]);

И когда я запускаю его, я получаю:

Аргумент задач содержит нулевое значение.Имя параметра: tasks '

Я не уверен, как работает встраивание, но разве результат не должен быть таким же?Насколько я понимаю, он просто скрывает локальную переменную.

...