Мой коллега нашел проблему с нашим кодом, и потребовалось некоторое время, чтобы выследить, что именно происходит, но это лучше всего продемонстрировать на этом простом примере:
// Fails
class Program
{
static void Main(string[] args)
{
Task.Run(() => Console.WriteLine("Hello World"));
Console.ReadKey();
}
}
// Works fine
class Program
{
static void Main(string[] args)
{
Console.Write(String.Empty);
Task.Run(() => Console.WriteLine("Hello World"));
Console.ReadKey();
}
}
Из-за того, что писать на консоль в любом месте из основного потока, это позволяет фоновому потоку также писать на консоль, но мы изо всех сил пытаемся понять, почему это происходит. Может ли кто-нибудь объяснить, что пишут на консоль из основного потока, что первый фрагмент не делает?