我想使用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);
}
}
答案 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;
}
}