帶參數的執行緒(Passing Data to Threads)(p.377)
- 必須使用 ParameterizedThreadStart 的物件來委派
- 指定委派的方法,必須是個有帶 object 型態參數的方法
- 使用 theThread.Abort() 來執行終止執行緒( theThread 是物件名稱)
- 適情況來使用「關鍵區域(CriticalRegion)」,防止執行緒執行不完全
- Thread.BeginCriticalRegion() => 關鍵區域起點
- Thread.EndCriticalRegion() => 關鍵區域終點
- 當執行緒處於關鍵區域時,它會繼續執行直到離開關鍵區域才終止(Stop)
- 每個執行緒都有散播相關資訊給下一代的能力
- 相反地,每個執行緒都會繼承其相關資訊
- 優點:直接可接收相關資訊來使用
- 缺點:繼承的過程中比較耗效能
- ExecutionContext 類別提供「SuppressFlow」、「RestorFlow」來控制是否繼承
- 透過 AsyncFlowControl 來移轉資料流達到關閉的效果
- 利用 theFlow.Undo() 重新開啟散播功能( theFlow 是 AsyncFlowControl 物件名」
- 若要在關閉散播功能後,繼續使用相關資訊,可在「前面」加入 ExecutionContext.Capture()來備份一份,之後要使用時,再利用 ExecutionContext.Run 來執行指定的內容
程式範例
沒有留言:
張貼留言