---
# System prepended metadata

title: 為何Blazor的專案有這麼多非同步寫法?
tags: [Blazor]

---

目前正在公司學習Blazor，前輩寫的專案中就很多是非同步寫法
跟之前學的WebForm、WPF寫法上很不一樣。
為何Blazor大多都要寫到非同步方法呢?
於是上網查一下來解個惑~~

1. Blazor 是一個基於WebAssembly的開發框架，與C#語言來建立交互式的Web應用程式。
2. Web應用程式中，非同步作法很常見，因為它們可以提高應用程式的效能和響應性。
3. Web應用程式通常需要與網絡進行交互，例如從伺服器加載資料或將資料傳送到伺服器。這些操作通常需要使用非同步方法來處理，以防止應用程式在等待IO操作完成時被阻塞。


---

### 同步
可以想像在煮飯時，要先炒好當下這道菜才能備下一道菜的料，要等一個工作完成後才會執行下一個。
### 非同步
在煮這道菜時，等菜熟的時候，可以先備下一道菜的料或拿個碗盤等待裝盤。尚未完成事件的同時，可以跑去做其他事情，不浪費等待時間。
目的：增加產能而非提高效能


<font color="blue">執行緒可以分工加速，但多建立一條執行緒，就會消耗約 1 MB 的記憶體來配置</font>

### 單執行緒
**<font color="red">從頭到尾只有一個 thread 可以執行程式</font>**
:::danger
▲非同步並不會多生出一個執行緒！！
:::


### 多執行緒
**<font color="red">有兩個以上的 thread 能夠執行程式</font>**

若上方非同步例子，是由兩個人一起完成，如「A在煮這道菜時，等菜熟的時候，A先備下一道菜的料，B拿個碗盤等待裝盤。」，那就是多執行緒，不是非同步了!!

多執行緒的精神為分工加速，建立多個執行緒個別處理

---

也推薦大家兩個網址：
第一個網址裡面圖片設計的一目了然:+1:
https://ouch1978.github.io/blog/2022/09/25/understand-sync-async-and-multi-thread-with-one-pic
第二個：
https://blog.opasschang.com/understand-csharp-asyn/

歡迎大家指教糾正