我正在练习多任务并尝试使用此代码,但它不能像我预期的那样工作。
我期待workTask在整个循环中首先打印“working ...”然后继续使用newTask并在整个循环中打印“moreWorkThread:working ...”。起初我认为“workThread:Done”将在最后打印,但后来我从输出中了解到它可以在其他的之间随时运行。
我根本不理解其余的行为。
newTask根本不运行,someWork中的循环也永远不会完成。
有人可以向我解释一下吗?我想知道为什么这个代码表现如此,我可以做什么mod来给出预期的输出
完成循环。
public static void Main() {
Task workTask = new Task(someWork);
workTask.Start();
Console.WriteLine("WorkThread: Done!");
Task newTask = workTask.ContinueWith(moreWork);
}
static public void someWork()
{
for(int i = 0; i < 16; i++)
{
Console.WriteLine("WorkThread: working...");
}
}
static public void moreWork(Task task)
{
for(int i = 0; i < 8; i++)
{
Console.WriteLine("moreWorkThread: working...");
}
}
示例输出:
WorkThread:完成!
WorkThread:工作......
WorkThread:工作......
答案 0 :(得分:1)
fullNameElement
:
FULLNAME firstname=WORD lastname=WORD
;
您最好使用异步等待。在你说'#34;完成&#34;。
之前,Await将等待一些工作先完成执行