从循环开始任务,并在循环结束时完成
问题描述:
我研究任务并得到一点问题 是否可以使用for循环运行和停止任务? 这里是我的代码示例:从循环开始任务,并在循环结束时完成
static void Main(string[] args)
{
for (int i = 0; i>=5; i++)
{
Task myTask = Task.Factory.StartNew(() => TestTask());
myTask.Wait();
if (myTask.IsCompleted)
{
Console.WriteLine("Task was complete");
}
else
{
Console.WriteLine(myTask.Status);
}
}
Console.ReadKey();
}
private static void TestTask()
{
Console.WriteLine("Add number");
}
答
这就是例子是多么容易取消任务与任何类型的迭代
static CancellationTokenSource cts;
static void Main(string[] args)
{
cts = new CancellationTokenSource();
Task.Factory.StartNew(test);
}
private async static void test()
{
await function(cts.Token);
}
static async Task function(CancellationToken ct)
{
try
{
while (!ct.IsCancellationRequested)
{
//start a loop
Thread.Sleep(1000);
//task done
cts.Cancel();
//cancel the loop
}
}
catch { }
}
你在哪里停下来?或者你想让它们平行运行? –
你究竟想要做什么?你似乎永远不会等待任务完成 –
Yeap抱歉复制了代码而没有等待,但仍然即使我使用等待它仍然未打印已经编辑过的任务中的文本。 – Harardin