如何转换任务的返回结果?

时间:2017-02-15 16:42:45

标签: c# .net casting delegates task

我想使用Task.Run在队列中执行Action并从Action获取返回值,如果成功,则从队列中删除它们。队列中的所有操作都返回类型DownloadManager。执行代码时,Action成功执行,但Task.Run最终失败并显示:

  

无法将'System.Threading.Tasks.Task'类型的对象强制转换为'System.Threading.Tasks.Task`1 [System.Boolean]'。

以下更新方法从基类调用为任务:

Task<bool>
调用基类Close()方法时,

_keepAlive设置为false。

public void Init()
{
    InitDaemon();

    KeepAliveTask = new Task(Run);
    KeepAliveTask.Start();
}

private void Run()
    while(_keepAlive)
    {  
        Update();
        Thread.Sleep(_updateMillSecs);
    }
}

1 个答案:

答案 0 :(得分:0)

这个怎么样:

class Class1
{
    private static Queue<Func<bool>> _oisQueue = new Queue<Func<bool>>();

    private async Task<bool> RunNextTask()
    {
        bool success = true;

        if (_oisQueue.Any())
        {
            success = await Task.Run(_oisQueue.First());
            _oisQueue.Dequeue();
        }

        return success;
    }
}