Task.Run Và Async Task Trong C# | How Kteam

Đăng ký Đăng nhập
  • PG Pages
  • Khóa học
    • Lập trình
      • Lập trình C# .Net
      • Lập trình C++
      • Lập trình Android
      • Điều trường học không dạy
      • Thủ thuật lập trình
      • Lập trình Java
      • Unity3D
      • Phân tích thiết kế
      • Lập trình Python
      • Lập trình PHP
      • Lập trình Robot
      • JavaScript - (Website)
      • Lập trình Front-End
      • Lập trình Mobile
    • Microsoft Office 2016
      • Microsoft Word 2016
      • Microsoft Excel 2016
      • Microsoft PowerPoint 2016
    • IT & Phần mềm
      • Thủ thuật máy tính
      • Hướng dẫn cài đặt
      • Bảo mật máy tính
      • Phần cứng & Bảo mật
    • Đồ họa hình ảnh
      • Adobe Photoshop LightRoom
    • Kinh tế
      • Quản trị kinh doanh
      • Kế toán
      • Nhân sự
      • SEO
      • Marketing
    • Ngoại ngữ
      • Tiếng anh
    • Kỹ năng mềm
      • Kỹ năng mềm
    • Tin tức
      • Tin tức công nghệ
  • Khóa học
  • Hỏi đáp
  • Bài viết
  • Tag
  • Kter
  • Về Kteam
  • Phản hồi
Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

Đặt câu hỏi Hỏi đáp Task.Run và async Task trong C# Task.Run và async Task trong C# 11:12 04-08-2021 11.968 lượt xem 4 bình luận 20:33 04-08-2021 c# task async await csharp Báo cáo

Ví dụ code của Task.Run:

internal class Program { private static readonly Stopwatch watch = new Stopwatch(); private static void Main(string[] args) { watch.Start(); TaskTest(); Console.Read(); } /*task run*/ private static void TaskTest() { Task task1 = Task.Run(() => Task1()); Task task2 = Task.Run(() => Task2()); Task.WaitAll(task1, task2); Console.WriteLine($"Execution Time: {watch.ElapsedMilliseconds} ms"); } private static void Task1() { Task.Delay(5000).Wait(); Console.WriteLine($"TaskOne\tExecution Time: {watch.ElapsedMilliseconds} ms"); } private static void Task2() { Task.Delay(2000).Wait(); Console.WriteLine($"TaskTwo\tExecution Time: {watch.ElapsedMilliseconds} ms"); } }

Ví dụ code của async Task:

internal class Program { private static readonly Stopwatch watch = new Stopwatch(); private static void Main(string[] args) { watch.Start(); TaskAsyncTest(); Console.Read(); } /*task async*/ private static void TaskAsyncTest() { Task task1 = Task1Async(); Task task2 = Task2Async(); Task.WaitAll(task1, task2); Console.WriteLine($"Execution Time: {watch.ElapsedMilliseconds} ms"); } private static async Task Task1Async() { await Task.Delay(5000); Console.WriteLine($"TaskOne\tExecution Time: {watch.ElapsedMilliseconds} ms"); } private static async Task Task2Async() { await Task.Delay(2000); Console.WriteLine($"TaskTwo\tExecution Time: {watch.ElapsedMilliseconds} ms"); } }

Kết quả so sánh:

Mọi người cho mình hỏi trong C# giữa Task.Runasync Task khác nhau như thế nào và khi nào dùng Task.Run, khi nào dùng async Task?

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập tqk2811 đã bình luận 20:25 04-08-2021

Đi sâu vào thì cũng khá khó nói và phức tạp, nên search tiếng anh nếu muốn hiểu rõ.

Nói đơn giản thì như nhau trong trường hợp này.

Với async thì task sẽ chạy cùng 1 thread với thằng gọi nếu có SynchronizationContext trong thread (Thread UI sẽ có cái này - Winform và Wpf). Lưu ý, trong trường hợp này nếu dùng Task.Result hay Task.Wait một hàm async khác sẽ bị dead lock.

Task.Run (và Task.Factory.StartNew ) thì có thể chạy khác thread, có thể chạy cùng thread (tùy config và ưu tiên).

Async await chỉ là keyword thôi, khi biên dịch ra thì nó thành kiểu tạo Task mới (Task.Run/Task.Factory.StartNew) rồi chạy tiếp sau await bằng Task.ContinueWith

2 0 Trả lời Báo cáo Xem tất cả 1 câu trả lời K9 SuperAdmin, KquizAdmin, KquizAuthor đã bình luận 20:31 04-08-2021

bạn thử xem trong đây giải thích khá chi tiết nè

DOCS

1 0 Trả lời Báo cáo Xem tất cả 1 câu trả lời

Câu hỏi mới nhất

Quan tâm Tag theo dõi

Yêu cầu đăng nhập

Để sử dụng tính năng này, Bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập

AD BLOCKER DETECTED

Để xem được nội dung và giúp Kteam duy trì hoạt động. Bạn vui lòng tắt Adblock trên website howkteam.vn nhé!

Từ khóa » Cách Dùng Async Await Trong C#