Câu hỏi: PRN222 Lập trình ứng dụng đa nền tảng nâng cao với .NET – Bộ ôn tập cuối kỳ số 3
50 câu trắc nghiệm kèm lời giải của môn Advanced Cross-Platform Application Programming With .NET - Lập trình ứng dụng đa nền tảng nâng cao với .NET, xếp đúng thứ tự trong đề.
Danh sách câu hỏi
await task;task.Wait();task.ContinueWith(...)await Task.WhenAll(tasks);Đáp án đúng: "task.Wait(); ". Task.Wait là lời gọi đồng bộ: luồng hiện tại đứng chờ (bị chặn, block) tới khi tác vụ kết thúc và không làm được việc gì khác, nên trong ứng dụng giao diện hay ASP.NET nó dễ làm đứng màn hình, cạn thread pool hoặc gây deadlock. "await task; " không chặn vì phương thức chỉ tạm dừng, luồng được trả lại cho bên gọi và phần sau chạy khi task xong. "task.ContinueWith(...)" không chặn vì nó chỉ đăng ký một phần tiếp nối sẽ chạy khi task hoàn tất rồi trả về ngay một Task mới. "await Task.WhenAll(tasks); " cũng không chặn: WhenAll tạo một Task hoàn tất khi mọi tác vụ trong danh sách xong và await chờ nó theo kiểu bất đồng bộ, bản chặn luồng tương ứng là Task.WaitAll.
Microsoft.Extensions.DependencyInjectionMicrosoft.AspNetCore.SignalRSystem.Threading.TasksMicrosoft.AspNetCore.MvcStartup.cs_Imports.razorProgram.csApp.razorAddSignalR()UseSignalR()ConfigureSignalR()EnableSignalR()services.AddTransient<IEmailService, SmtpEmailService>();What happens when IEmailService is requested multiple times?
public IActionResult Index()
{
ViewBag.Count = 10;
return View();
}Razor:
<p>@(ViewBag.Count + 5)</p>What happens?