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