运行 一个序列中的多个 HttpResponseMessage 任务
Run Multiple HttpResponseMessage Task in a sequence
在控制台应用程序中,我创建了一个任务列表,我在其中添加了三个异步任务:
static void Main(string[] args)
{
List<Task> task_list= new List<Task>();
Task task_1=new Task(async () => await Task_method1());
Task task_2=new Task(async () => await Task_method2());
Task task_3=new Task(async () => await Task_method3());
task_list.Add(task_1);
task_list.Add(task_2);
task_list.Add(task_3);
Task.WaitAll(task_list.ToArray());
foreach (Task t in task_list)
{
Console.WriteLine("Task {0} Status: {1}", t.Id, t.Status);
}
Console.ReadKey();
}
下面是 3 任务的方法定义:
public async Task<HttpResponseMessage> Task_Method1()
{
//Code for Response
return Response;
}
public async Task<HttpResponseMessage> Task_Method2()
{
//Code for Response
return Response;
}
public async Task<HttpResponseMessage> Task_Method3()
{
//Code for Response
return Response;
}
问题是它们是 运行 并行的,并且没有序列化的任务顺序。我进行了很多搜索,但没有找到适合 运行 系列的解决方案。
作为参考,请参见下图:
运行 1:
运行 2:
RUN3:
你一定是遗漏了一些代码,因为即使任务以任意顺序完成,你的 List
的顺序应该保持不变,但你用 List
的顺序显示你的输出改变。
然后重新实际执行它,也许我遗漏了一些东西,但如果你想让他们 运行 为了为什么不这样做:
static void Main(string[] args)
{
MainAsync().Wait();
}
private async Task MainAsync()
{
var response1 = await Task_method1();
var response2 = await Task_method2();
var response3 = await Task_method3();
// Write results, etc.
Console.ReadKey();
}
在控制台应用程序中,我创建了一个任务列表,我在其中添加了三个异步任务:
static void Main(string[] args)
{
List<Task> task_list= new List<Task>();
Task task_1=new Task(async () => await Task_method1());
Task task_2=new Task(async () => await Task_method2());
Task task_3=new Task(async () => await Task_method3());
task_list.Add(task_1);
task_list.Add(task_2);
task_list.Add(task_3);
Task.WaitAll(task_list.ToArray());
foreach (Task t in task_list)
{
Console.WriteLine("Task {0} Status: {1}", t.Id, t.Status);
}
Console.ReadKey();
}
下面是 3 任务的方法定义:
public async Task<HttpResponseMessage> Task_Method1()
{
//Code for Response
return Response;
}
public async Task<HttpResponseMessage> Task_Method2()
{
//Code for Response
return Response;
}
public async Task<HttpResponseMessage> Task_Method3()
{
//Code for Response
return Response;
}
问题是它们是 运行 并行的,并且没有序列化的任务顺序。我进行了很多搜索,但没有找到适合 运行 系列的解决方案。 作为参考,请参见下图:
运行 1:
运行 2:
RUN3:
你一定是遗漏了一些代码,因为即使任务以任意顺序完成,你的 List
的顺序应该保持不变,但你用 List
的顺序显示你的输出改变。
然后重新实际执行它,也许我遗漏了一些东西,但如果你想让他们 运行 为了为什么不这样做:
static void Main(string[] args)
{
MainAsync().Wait();
}
private async Task MainAsync()
{
var response1 = await Task_method1();
var response2 = await Task_method2();
var response3 = await Task_method3();
// Write results, etc.
Console.ReadKey();
}