Một đồng nghiệp của tôi đã tìm thấy vấn đề với mã của chúng tôi và mất một thời gian để tìm kiếm chính xác những gì đang diễn ra, nhưng nó có thể được chứng minh tốt nhất bằng ví dụ đơn giản này:Viết cho bàn điều khiển bằng cách sử dụng Task.Run() không thành công
// 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();
}
}
Rõ ràng là việc chơi với bàn điều khiển ở bất cứ nơi nào từ chủ đề chính cũng sẽ cho phép chủ đề nền ghi vào bàn điều khiển, nhưng chúng tôi đang cố gắng hiểu tại sao điều này xảy ra. Bất cứ ai có thể giải thích những gì bằng văn bản cho giao diện điều khiển từ thread chính đạt được rằng đoạn đầu tiên không?
Bạn chưa mô tả những gì xảy ra trong trường hợp lỗi của bạn. Trên hộp của tôi, nó dường như treo cho đến khi bạn nhấn trở lại, tại thời điểm đó nó in. –
@JonSkeet Có đó là hành vi tôi thấy – kevinawalker