# 📚 讀書會紀錄 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 有很多不同的狀態可以表示,可以深入了解。
### 改進
- 無法準確掌握分享內容的使用時機,或許可以提出簡單的範例一起討論。
---