---
# System prepended metadata

title: "\U0001F4DA 讀書會紀錄 2025/09/25"
tags: [讀書會紀錄]

---

# 📚 讀書會紀錄 2025/09/25

## 🗓️ 日期
- 2025/09/25
- 地點：星巴克-南京復興門市
- 成員：晏綾、Eva

---

## ✅ 今日議程
1. 困難點分享
2. 小知識分享
3. 總結與下次安排

---

## 💡 困難點分享
### 👤 晏綾
- [ ] TaskCompletionSource 用法 [ChatGPT](https://chatgpt.com/share/68d53026-17c8-8002-b503-3c7652bafe6f)
- [ ] Async Await 到底誰等誰 [ChatGPT](https://chatgpt.com/share/68d53068-52d8-8002-b34a-8f47c8a4c4d6)

👉 討論紀錄： 參考GPT

### 👤 Eva
- [ ] WINFORM的防呆處理 
[Control.Validating 事件](https://learn.microsoft.com/zh-tw/dotnet/api/system.windows.forms.control.validating?view=windowsdesktop-9.0)
[Form.FormClosing 事件](https://learn.microsoft.com/zh-tw/dotnet/api/system.windows.forms.form.formclosing?view=windowsdesktop-9.0)
[ItemCollection.CurrentItem 屬性](https://learn.microsoft.com/zh-tw/dotnet/api/system.windows.controls.itemcollection.currentitem?view=windowsdesktop-9.0)
- [ ] TCP封包未正確傳輸:可透過Flags的狀態查看是誰發出終止傳輸的訊號，再回頭找相對應的程式碼。
[Process Monitor](https://learn.microsoft.com/zh-tw/sysinternals/downloads/procmon) 

👉 討論紀錄：參考資料

---

## 📎 小知識分享

### Switch Expression
- Switch Expression：[官方文件](https://learn.microsoft.com/zh-tw/dotnet/csharp/language-reference/operators/switch-expression)

```
private static void SwitchExpression()
{
    DateTime currentTime = DateTime.Now;

    int hour = currentTime.Hour;
    DayOfWeek dayOfWeek = currentTime.DayOfWeek;
    string result = (hour, dayOfWeek) switch
    {
        ( >= 5 and < 12, >= DayOfWeek.Monday and <= DayOfWeek.Friday) => "工作日早上好！",
        ( >= 5 and < 12, DayOfWeek.Saturday or DayOfWeek.Sunday) => "週末早上好！",
        ( >= 12 and < 18, >= DayOfWeek.Monday and <= DayOfWeek.Friday) => "工作日下午好！",
        ( >= 12 and < 18, DayOfWeek.Saturday or DayOfWeek.Sunday) => "週末下午好！",
        ( >= 18 and < 22, _) => "晚上好！",
        ( >= 22 or < 5, _) => "晚安！",
        _ => "時間錯誤"
    };
    Console.WriteLine(result);
}
```
---
### WebSocket Server
- WebSocket 解決了 HTTP「請求-回應」 無法即時雙向傳輸的限制
- WebSocket Server 的核心概念：
    *1.握手 (Handshake)」
    2.持續連線
    3.雙向傳輸:Server可以主動發送資料給Client*
- WebSocket Server 的角色：
    *1.維持連線
    2.管理 Client Session
    3.分發 / 處理訊息*
- 在需要「即時互動」的場景，可以使用WebSocket達成
    1.聊天室：每個訊息廣播給所有人
    2.多人遊戲：同步位置、狀態
    3.股票/匯率報價：伺服器主動推送更新
    4.IoT 裝置控制：裝置即時回報狀態

---

## 📝 任務追蹤
- [ ] 深入了解一下Ansyc/Await，各自找一個小例子進行討論，分享看法。
- [x] 工作上遇到的困難及小知識分享
- [x] 下次討論地點：星巴克-南京復興門市(暫定)
- [x] 下次日期：2025/10/16 18:30~

---

## 📌 本次總結
### 收穫
- SignalR回應只單純回應傳輸成功與否，內容要另做處理。
- 目前已知可透過 TaskCompletionSource / on事件 / Dictionary包裝去處理接收的訊息。
- TCP Flags 有很多不同的狀態可以表示，可以深入了解。

### 改進
- 無法準確掌握分享內容的使用時機，或許可以提出簡單的範例一起討論。
---