控制台啟用關閉事件

2022-02-16 13:09:42 字數 1076 閱讀 4805

問題:伺服器上放的控制台程式很容易被別人或自己誤操作關關閉,那程式正在處理操作的資料可能正處理到一般,這個時候資料庫裡面的資料可能只是整個業務的中間狀態,不是我們要的最終結果,咋辦呢??

解決辦法:

1.主備控制台,切換到備胎程式,檢測中間業務狀態的資料,加入到處理中(業務狀態通常會有點複雜,改起來會比較煩,合適業務狀態少,業務簡單的場景),即使主機斷點,從機依然能處理資料

2.啟用關閉視窗事件,暫停迴圈處理資料的程式,執行緒打盹3秒,等待將當前資料處理完成,對於斷電斷網宕機事件就沒辦法了,這裡有個問題,3秒能處理的完嗎?有點慌...或者說我10毫秒就處理完了,你讓我等3秒那麼久。。。

下面是2的例子:

對於2中等待3秒做個優化:

思路:關閉事件中通知資料消費中心終止消費,並迴圈判斷資料消費中心當前消費的那條資料消費結束沒,結束了跳出迴圈,關閉控制台程式

**應該是下面這個樣子:

class program

return false;

}#endregion

[stathread]

static void main(string args)

#endregion

}private static int flag = 1;

private static bool stop = false;

private static void taskbegin(object source, system.timers.elapsedeventargs e)

console.writeline("flag:"+ flag);}}

C 處理控制台關閉事件

我們開發的控制台應用,在執行階段很有可能被使用者ctrl c終止或是被使用者直接關閉。如果我們不希望使用者通過ctrl c終止我們的程式,就需要對ctrl c或關閉事件作處理。在.net平台下console類有個cancelkeypress事件可以處理ctrl c,不過對於直接關閉控制台應用,這種處...

認識控制台 控制台控制代碼 附著到控制台 關閉控制台

1.附著到乙個控制台 乙個程序可以使用 attachconsole 函式來附著到乙個控制台上,乙個程序只能附著乙個控制台。乙個控制台可以有許多程序附著到它上面,呼叫 getconsoleprocesslist 函式可以得到附著到乙個控制台的列表。2.關閉乙個控制台 程序可以使用 freeconsol...

認識控制台 控制台控制代碼 附著到控制台 關閉控制台

附著到乙個控制台 乙個程序可以使用 attachconsole 函式來附著到乙個控制台上,乙個程序只能附著乙個控制台。乙個控制台可以有許多程序附著到它上面,呼叫 getconsoleprocesslist 函式可以得到附著到乙個控制台的列表。關閉乙個控制台 程序可以使用 freeconsole 函式...