为什么这段代码没有返回预期的结果?

时间:2016-03-11 20:48:45

标签: c# .net multithreading

我正在练习多任务并尝试使用此代码,但它不能像我预期的那样工作。

我期待workTask在整个循环中首先打印“working ...”然后继续使用newTask并在整个循环中打印“moreWorkThread:working ...”。起初我认为“workThread:Done”将在最后打印,但后来我从输出中了解到它可以在其他的之间随时运行。

我根本不理解其余的行为。
newTask根本不运行,someWork中的循环也永远不会完成。

有人可以向我解释一下吗?我想知道为什么这个代码表现如此,我可以做什么mod来给出预期的输出

  • 运行一些工作
  • 完成循环
  • continueWith moreWork
  • 完成循环。

    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:工作......

1 个答案:

答案 0 :(得分:1)

fullNameElement
:
    FULLNAME firstname=WORD lastname=WORD
;

您最好使用异步等待。在你说'#34;完成&#34;。

之前,Await将等待一些工作先完成执行
相关问题