Nếu bạn chưa bị thuyết phục về một nhiệm vụ nền, chỉ cần cố gắng truy cập một phần tử GUI từ bên trong một Tác vụ như:
public async Task<int> ProcessStuff_Async()
{
while(true)
{
label1.Text = "processing next item";
để lấy ngoại lệ thời gian chạy:
Thao tác xuyên luồng không hợp lệ: Điều khiển 'label1' được truy cập từ một luồng khác với luồng mà nó được tạo.
giống như với các chủ đề nền thông thường cũ tốt.
Có thông tin trong tài liệu MSDN (tính đến năm 2017 :-), ví dụ:
Cách tốt nhất để xử lý điều này ... là bắt đầu một chuỗi nền thực hiện công việc bằng Task.Run và chờ đợi kết quả của nó. Điều này sẽ cho phép giao diện người dùng cảm thấy mượt mà khi công việc đang được thực hiện.
Tài liệu này thậm chí còn có một phần What happens under the covers.