Невозможно назначить void неявно типизированной переменной при попытке создать несколько задач и запустить их параллельно - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь создать несколько задач C# и запускать их все параллельно.

class Program
{
    static async Task Main(string[] args)
    {
        var task1 = await WriteDouble();
        var task2 = await WriteString();

        await Task.WhenAll(task1, task2);
    }

    private static async Task WriteString()
    {
        await using var file = new StreamWriter(@"C:\Temp\test1.txt");
        await file.WriteLineAsync("this is string");
    }

    private static async Task WriteDouble()
    {
        await using var file = new StreamWriter(@"C:\Temp\test2.txt");
        await file.WriteLineAsync("this is double");
    }
}

Здесь WriteDouble и WriteString делают задачу записи в файл, какой тип возврата Задачи здесь лучший?

В настоящее время я получаю ниже ошибку компиляции,

Невозможно назначить void неявно типизированной переменной

1 Ответ

4 голосов
/ 27 марта 2020

Ваши имена переменных (и использование Task.WhenAll) предполагают, что вы ожидаете хранить в них задачи - но вы ожидаете задач, возвращаемых этими методами. Просто удалите оператор await:

static async Task Main(string[] args)
{
    var task1 = WriteDouble();
    var task2 = WriteString();

    await Task.WhenAll(task1, task2);
}

По сути, вам необходимо различать «задачи, возвращаемые асинхронными методами» и «результат задачи» ... используйте await только тогда, когда хотите чтобы получить результат задания, которого в этом случае нет в первых двух строках Main.

...