• dong dong

    Khái niệm về bất đồng bộ (Asynchronous)

    • Bất đồng bộ (asynchronous) trong lập trình là một kỹ thuật cho phép một chương trình thực hiện nhiều tác vụ cùng lúc mà không cần phải chờ một tác vụ hoàn thành trước khi chuyển sang tác vụ tiếp theo.

    Lý do tại sao lại có bất đồng bộ trong code

    • Bất đồng bộ phát sinh từ logic các game yêu cầu cần phải thực hiện 1 việc nào đó ngay sau khi 1 sự việc vừa mới hoàn thành.
    • Giải quyết các task vụ cần nhiều thời gian như di chuyển 1 vật từ vị trí A đến vị trí B trong 10s.

    Khái niệm về Async

    • Là từ khóa dùng để khai báo một hàm chạy bất đồng bộ.
      Screen Shot 2568-05-05 at 22.01.41.png
    • Khi khai báo từ khoá async compiler sẽ tự động chuyển hàm async thành một “máy trạng thái” (state machine) để tự động quay lại thực thi phần còn lại sau khi tác vụ hoàn tất.

    Tại sao lại cần phải sử dụng await

    • Await được sử dụng cùng với async để tạm dừng hàm async cho đến khi tác vụ bất đồng bộ hoàn thành mà không chặn toàn bộ chương trình
    • Cách sử dụng Await:
      Sử dụng await trong 1 hàm được khai báo với từ khoá async

    Tại sao cần phải sử dụng CancellationTokenSource trong C# và vấn đề với try catch

    Lý do: Khi bạn muốn dừng 1 tác vụ đang chạy trước khi nó hoàn tất. CancellationTokenSource sinh ra để theo dõi và quản lí các tác vụ bất đồng bộ (async) 1 cách có kiểm soát.

    Cách sử dụng

    • khởi tạo đối tượng CancellationTokenSource và gán cho tác vụ đang chạy.

    Screen Shot 2568-05-05 at 22.24.33.png

    • Khi cần huỷ thì gọi "cts.Cancel()" để huỷ
      Screen Shot 2568-05-05 at 22.27.33.png
    • Khi Cancel() được gọi thì CancellationToken sẽ báo hiệu "đã bị huỷ" và nếu tác vụ nào đang chạy mà được gán CancellationToken thì nó sẽ trả về 1 exception. Từ đó try catch được sinh ra để bắt exception này và return để chương trình không bị lỗi.

    Note: Try catch chỉ bắt được exception chứ không bắt được error.

    posted in Chung read more