c# - 等待不调用我的方法,它永远不会返回

标签 c# .net task-parallel-library async-await c#-5.0

我有以下使用异步等待的代码。

    private async void DoAction()
    {
        foreach (var ele in new int[] { 1, 2, 3, 4, 5 })
        {
            int i = await LoadAction();
        }
    }

    private Task<int> LoadAction()
    {
        Task<int> task = new Task<int>(CalledFromAsync);
        return task;
    }

    private int CalledFromAsync()
    {
        Thread.Sleep(2000);
        return rand.Next();
    }

我的 CalledFromAsync() 从未被调用过。我在这里做错了什么吗?请帮助我。

最佳答案

您正在返回一个从未开始的任务。它也从未完成也就不足为奇了。您需要使用 task.Start(); 来启动任务,或任何其他工厂方法,例如 Task.Run

关于c# - 等待不调用我的方法,它永远不会返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24689625/

相关文章:

C# 字典 : faster access but less memory footprint

.net - 在 log4net 中以编程方式添加和删除日志附加程序

c# - .Continue 在任务完成之前开始

c# - 为什么并行多线程代码执行比顺序执行慢?

c# - 在 C# 中管理 COM 对象

c# - 如何执行Azure队列触发的大量持久函数?

c# - OleDBConnection 连接字符串

c# - 我应该重用表适配器实例吗?

c# - 如何将完成端口操作(I/O 绑定(bind)函数)排队到 CLR 线程池

c# - 任务 MaxDegreeOfParallelism 每次都可以从我的列表中获取第一个 n 对象吗?