如何在异步函数中发送参数值

时间:2019-01-03 05:59:00

标签: c# asynchronous

我需要通过发送一些参数来调用异步函数。没有参数也可以,但是我需要通过其签名发送参数。

这是我的代码:

// 这是我当前运行的无参数代码。

    private int Counting()
    {
        for (int i = 0; i < 2000; i++)
        {
            Console.WriteLine(i.ToString());
            Thread.Sleep(5);
        }

        return 0;
    }



    private async void button2_Click(object sender, EventArgs e)
    {
        Task<int> task = new Task<int>(Counting);
        task.Start();

        MessageBox.Show("Job started ..");

        int countValue = await task;

        MessageBox.Show("Job Done");

    }

// 但是我需要这样做:

    private int Counting(int maxCount)
    {
        for (int i = 0; i < maxCount; i++)
        {
            Console.WriteLine(i.ToString());
            Thread.Sleep(5);
        }

        return 0;
    }



    private async void button2_Click(object sender, EventArgs e)
    {
        Task<int> task = new Task<int>(Counting(2000));
        task.Start();

        MessageBox.Show("Job started ..");

        int countValue = await task;

        MessageBox.Show("Job Done");

    }

我该怎么做?

1 个答案:

答案 0 :(得分:3)

您需要使用lambda语法

Task<int> task = new Task<int>(() => Counting(2000));

Lambda Expressions (C# Programming Guide)