1
我正在開發一個用於測量的Winform
應用程序。測量涉及像機器人,電源等外部硬件。可取消測量算法
由於測量本身長時間運行(大約20分鐘),它將在後臺工作中運行。
對我來說,主要的問題是如何設計可測量的容器。例如,如果他做錯了某些事情,用戶應該能夠取消測量。但是測量不應該到處取消 - 例如在執行IO
通信時不允許取消測量。此外,如果用戶取消,應該有一個保存shutdown
。
問題是,我不想用取消相關代碼污染業務邏輯(測量)。
這是什麼方法?
我在python
中做過類似的邏輯。在那裏,我將測量作爲狀態機(FSM
)實施。每個狀態轉換都是一個取消點。如果用戶在狀態運行時取消,狀態機會跳轉到發生安全關閉的狀態finish
。
您仍然可以使自己的狀態機或添加一個布爾標誌,你的後臺代碼檢查的時候,它可以中止執行 – 2013-04-09 15:23:30
,另請參閱[文檔關於取消託管線程] (http://msdn.microsoft.com/en-gb/library/dd997364.aspx)。 – 2013-04-09 15:44:09