title: Wrapping a method with Task.Run( ... ) hangs when called in a Static constructor
body: <p>I have a series of long-running functions. I want to wrap them in a <code>Task</code> so that I can run all of them concurrently, rather than waiting for each one to finish sequentially.</p>
  
  <p>The method calls, and all relevant field values and methods and properties exist within a static class.</p>
  
  <p>I'm having a problem wherein the static class constructor fails to complete because it is hanging when I wrap a method within with <code>Task.Run</code>.</p>
  
  <p>In compliance with the requisite <a href="https://stackoverflow.com/help/mcve">Mininmal, Complete and Verifiable</a> example requirements...</p>
  
  <pre><code>using System;
  using System.Linq;
  using System.Threading.Tasks;
  
  namespace MCVEAsyncHang
  {
      class Program
      {
          private static readonly string[] _foo;
  
          static Program()
          {
              _foo = Task.WhenAll(Task.Run(new Func&lt;string&gt;(One))).Result;
          }
  
          private static string One()
          {
              return "Foo";
          }
  
          private static void Print()
          {
              Console.WriteLine(
                  _foo.Aggregate((total, current) =&gt; 
                       total + string.Format("{0}{1}", Environment.NewLine, current)));
          }
  
          static void Main(string[] args)
          {
              Print();
              Console.WriteLine("Done");
              Console.ReadLine();
          }
      }
  }
  </code></pre>
  
  <p>I understand I can just create some other method and call that ( and I will if I have to ( begrudgingly so ) ) but if it IS possible, I'd rather keep this within the static class constructor.</p>