任务以及如何正确使用它们 C#
Tasks and how to use them properly C#
我目前正在一些项目中使用任务,我想知道如何才能使用相同的方法多次 运行 并行代码。
这是我的代码:
Task CPU1 = new Task(CPU1_DoWork);
Task CPU2 = new Task(CPU2_DoWork);
// And i wanted to execute the CPU1 Task multiple time here is how i used it:
while (Timer_General.IsRunning == true)
{
if (CPU1.Status != TaskStatus.Running)
{
CPU1.Start();
}
if (CPU2.Status != TaskStatus.Running)
{
CPU2.Start();
}
}
// Other Blabla
为什么他运行宁CPU1_DoWork
只有一次?谢谢你们的帮助! :)
我添加了 CPU2 序列,因为如果我们等待第一个,第二个将不会被调用:/ 所以这会带来问题。有没有其他方法可以同时多次执行我的任务 运行?
一个Task
不能重复使用。对于您要使用的每一个,您都需要创建一个新实例。您应该使用内置的工厂方法 Task.Run
而不是 Task
,这将 return 成为您的热门任务:
public async Task FooAsync()
{
while (Timer_General.IsRunning)
{
await Task.Run(CPU1_DoWork);
}
}
当您检查 Task.IsRunning
时,我假设您想异步等待每个任务完成,因此我添加了 await
关键字。
编辑:
由于您添加了第二个任务并希望它们并行执行 运行,您可以使用 Task.WhenAll
:
public async Task FooAsync()
{
while (Timer_General.IsRunning)
{
await Task.WhenAll(Task.Run(CPU1_DoWork),
Task.Run(CPU2_Work));
}
}
我目前正在一些项目中使用任务,我想知道如何才能使用相同的方法多次 运行 并行代码。 这是我的代码:
Task CPU1 = new Task(CPU1_DoWork);
Task CPU2 = new Task(CPU2_DoWork);
// And i wanted to execute the CPU1 Task multiple time here is how i used it:
while (Timer_General.IsRunning == true)
{
if (CPU1.Status != TaskStatus.Running)
{
CPU1.Start();
}
if (CPU2.Status != TaskStatus.Running)
{
CPU2.Start();
}
}
// Other Blabla
为什么他运行宁CPU1_DoWork
只有一次?谢谢你们的帮助! :)
我添加了 CPU2 序列,因为如果我们等待第一个,第二个将不会被调用:/ 所以这会带来问题。有没有其他方法可以同时多次执行我的任务 运行?
一个Task
不能重复使用。对于您要使用的每一个,您都需要创建一个新实例。您应该使用内置的工厂方法 Task.Run
而不是 Task
,这将 return 成为您的热门任务:
public async Task FooAsync()
{
while (Timer_General.IsRunning)
{
await Task.Run(CPU1_DoWork);
}
}
当您检查 Task.IsRunning
时,我假设您想异步等待每个任务完成,因此我添加了 await
关键字。
编辑:
由于您添加了第二个任务并希望它们并行执行 运行,您可以使用 Task.WhenAll
:
public async Task FooAsync()
{
while (Timer_General.IsRunning)
{
await Task.WhenAll(Task.Run(CPU1_DoWork),
Task.Run(CPU2_Work));
}
}