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

标签 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");

    }

我该怎么做?

最佳答案

您需要使用 lambda 语法

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

Lambda Expressions (C# Programming Guide)

关于c# - 如何在异步函数中发送参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54017046/

相关文章:

c# - 如何在没有缓冲的情况下使用单个枚举检查 IEnumerable 的多个条件?

c# - 'Mountain' 没有实现接口(interface)成员 'IBiome.height'

javascript - 使用 map/reduce 和 jQuery 顺序运行任意数量的脚本

python - 如何在 Python 中每 60 秒异步执行一次函数?

c# - 在按钮模板上设置 CornerRadius

c# - C# 中奇怪的循环

c# - 错误: Unable to load the service index for source <URL> when adding to Visual Studio

javascript - React HOC 模式——处理异步方法

javascript - 等待异步 javascript 函数返回

javascript - 带有 IO 的异步 Node.js 概念