Câu hỏi phỏng vấn Net core
Câu hỏi

Giải thích cách hoạt động của nhiệm vụ...

Câu trả lời

Trong ngôn ngữ lập trình C# của .NET, các nhiệm vụ bất đồng bộ và cặp từ khóa Async/Await làm việc cùng nhau để cải thiện hiệu suất và đáp ứng của ứng dụng bằng cách cho phép thực hiện các tác vụ mà không cần chờ đợi một cách tuần tự. Điều này giúp ứng dụng có thể tiếp tục xử lý các công việc khác trong khi đang chờ đợi một tác vụ nào đó hoàn thành, từ đó giảm thiểu thời gian chờ và tăng cường trải nghiệm người dùng[2][6][7].

Async

Từ khóa async được sử dụng để khai báo một phương thức bất đồng bộ. Khi một phương thức được khai báo với async, nó sẽ trả về một Task hoặc Task<T>, nơi T là kiểu dữ liệu của kết quả trả về. Phương thức này có thể chứa một hoặc nhiều lời gọi await bên trong nó[2][6].

Await

Từ khóa await được sử dụng để gọi một phương thức bất đồng bộ và "đợi" cho đến khi phương thức đó hoàn thành, mà không làm chặn luồng thực thi chính của ứng dụng. Khi một phương thức bất đồng bộ được gọi với await, luồng thực thi hiện tại sẽ được giải phóng để có thể thực hiện các tác vụ khác và sẽ quay trở lại phương thức bất đồng bộ khi nó hoàn thành[1][2][7].

Ví dụ

Giả sử bạn có một phương thức AccessTheWebAsync sử dụng HttpClient để tải về một chuỗi từ một URL. Bạn có thể viết phương thức này như sau:

csharp Copy
async Task<int> AccessTheWebAsync()
{
    HttpClient client = new HttpClient();
    string urlContents = await client.GetStringAsync("http://msdn.microsoft.com");
    return urlContents.Length;
}

Khi gọi AccessTheWebAsync, bạn sẽ sử dụng await để đợi cho đến khi nó hoàn thành và trả về kích thước của chuỗi đã tải về[2].

Quản lý nhiều nhiệm vụ bất đồng bộ

.NET cung cấp các công cụ như Task.WhenAllTask.WhenAny để quản lý việc thực thi của nhiều nhiệm vụ bất đồng bộ. Task.WhenAll cho phép bạn đợi cho đến khi tất cả các nhiệm vụ hoàn thành, trong khi Task.WhenAny cho phép bạn đợi ...

senior

senior

Gợi ý câu hỏi phỏng vấn

middle

Làm thế nào bạn có thể tạo Scope riêng cho một đối tượng Scoped trong .NET?

senior

Tại sao thư viện .NET Standard tồn tại?

junior

MSIL là gì?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào