在func
类型中定义了不同数量的任务,因此可以定义任务,但不能自动启动。例如说:
Func<Task> task1Func = () => DoTask1Async();
以这种方式定义的一些任务返回值。我需要一种方法来‘传递’这些任务的结果到后续任务的参数,以同样的方式定义。所以,我想写:
Func<Task> task2Func = () => DoTask2Async(task1Func.Invoke().Result));
Func<Task> funcTasks = () => DoTask1Async().ContinueWith(t => DoTask2Async(t.Result));
任务按定义的顺序处理,每个任务在处理下一个任务之前完成。任务的结果仅用于后续任务。
在使用task1func.invoke().result
响应对可运行代码的请求时,如下所示。创建一个新的WPF项目,并将一个按钮添加到默认网格中。然后清除mainWindow.xaml.cs文件并粘贴到下面的内容中。这是最接近我的真实项目的代码,同时删去了所有与问题无关的东西。
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Windows;
namespace WpfApplication2
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private async void Button_Click(object sender, RoutedEventArgs e)
{
// Declare first task that returns a result
Func<Task<int>> deferredTask1 = () => DoTask1Async();
// Declare second task using result of first.
// BUT this isn't good as it calls deferredTask1 AGAIN, so need another approach.
Func<Task> deferredTask2 = () => DoTask2Async(deferredTask1.Invoke().Result);
var item1 = new MyItem() { MyDeferredTask = deferredTask1 };
var item2 = new MyItem() { MyDeferredTask = deferredTask2 };
List<MyItem> items = new List<MyItem>();
items.Add(item1);
items.Add(item2);
await DoTasksAsync(items);
}
public static async Task<int> DoTask1Async()
{
return await Task<int>.Run(() => { return 3000; });
}
public static async Task DoTask2Async(int delay)
{
await Task.Delay(delay);
}
private async Task DoTasksAsync(IEnumerable<MyItem> items)
{
foreach (var item in items)
{
await item.MyDeferredTask();
}
}
private class MyItem
{
public Func<Task> MyDeferredTask { get; set; }
}
}
}
使用Microsoft的Reactive框架,您可以这样做:
var query =
from r1 in Observable.FromAsync(() => DoTask1Async())
from r2 in Observable.FromAsync(() => DoTask2Async(r1))
select new { r1, r2 };
await query;
A task is special because knowing when a task is about to exit is useful in these circumstances: Frameworks know when to render the UI. Measuring enter/leave allows knowing total script/task time. Exi
7.15. 其他任务 这里有一些简单的任务,你可以自己解决: 把模板文件存放在tmpl/目录,页面数据存放在data/目录。 增加一个处理函数(handler),将对根目录的请求重定向到/view/FrontPage。 修饰页面模板,使其成为有效的HTML文件。添加CSS规则。 实现页内链接。将[PageName]修改为<a href="/view/PageName">PageName</a>。(
我使用部署到pivotal cloud foundry的spring云数据流,将spring批处理作业作为spring云任务运行,这些作业需要aws凭据才能访问s3存储桶。 我尝试将aws凭据作为任务属性传递,但凭据作为参数或属性显示在任务的日志文件中。(https://docs.spring.io/spring-cloud-dataflow/docs/current/reference/html
问题内容: 我有一个运行自定义gradle任务的Java应用程序,该应用程序在被调用时需要一些参数。这些是: Gradle任务如下所示: 我已尝试运行,但无法正常工作。 问题答案: 从Gradle 4.9开始,可以使用–args传递命令行参数。例如,如果要使用命令行参数启动应用程序,则可以使用 gradle run –args =’foo –bar’ 另请参阅Gradle应用程序插件 如何升级Gr
问题内容: 该文档讨论了使用numba的作为的参数。我需要带有附加参数的相同内容。 我基本上是想做这样的事情: 但是,它不起作用,因为应该是/并且不能将它们转换为。我收到以下错误消息: 我没有找到有关如何从Numba中提取值的任何信息。在C语言中,应该类似于—在Numba中可以做同样的事情吗? 问题答案: 1.通过传递额外的参数 该文件说: 如果用户希望改善集成性能,则可以使用以下签名之一: 该是
问题内容: 我在task.py中有一个任务,如下所示: 我试图将请求对象直接从几个传递给任务,如下所示: 我收到一个无法序列化的错误,我猜是吗?我该如何解决?麻烦的是我也有文件上传对象..它不是所有简单的数据类型。 问题答案: 因为请求对象包含对不实际序列化的内容的引用(例如上载的文件或与请求关联的套接字),所以没有通用的方法来对其进行序列化。 相反,您应该拔出并传递需要的部分。例如,类似: