Why will an empty .NET Task not complete if started and waited for from a static constructor?

前端 未结 3 929
天涯浪人
天涯浪人 2020-12-31 23:54

I cannot understand why the following code will not work:

var task = new Task(() => { });
task.Start();
if (task.Wait(10000))
{
   logger.Info(\"Works\");         


        
3条回答
  •  天命终不由人
    2021-01-01 00:10

    It works:

            var task = new Task(() => { });
            task.Start();
            if (task.Wait(10000))
            {
                Console.WriteLine("yes");
            }
            else
            {
                Console.WriteLine("no");
            }
    

    And gives the output yes as expected. You must be doing something else which is causing it to not work. In the given form, without context of what / where you are doing it, it works.

    Even this abomination works:

            var task = new Task(() =>
                                    {
    
                                        var task1 = new Task(() =>
                                                                {
                                                                });
                                        task1.Start();
                                        if (task1.Wait(10000))
                                        {
                                            Console.WriteLine("yes");
                                        }
                                        else
                                        {
                                            Console.WriteLine("no");
                                        }
    
                                    });
            task.Start();
            if (task.Wait(10000))
            {
                Console.WriteLine("yes");
            }
            else
            {
                Console.WriteLine("no");
            }
    

提交回复
热议问题