我有一個(gè)表單,它有一個(gè)在其中運(yùn)行的耗時(shí)方法。我想在它運(yùn)行時(shí)用按鍵取消該方法,但是由于一些限制,我無法將該方法轉(zhuǎn)換為任務(wù)或任何異步。場(chǎng)景是,用戶按下一個(gè)按鈕,該按鈕調(diào)用該方法(假設(shè)它運(yùn)行一段時(shí)間(x > y)),這需要一些時(shí)間,如果用戶按下 esc 鍵,我想打破該方法。如何捕獲無響應(yīng)表單的按鍵?由于 while 方法阻止了表單,因此表單的按鍵方法沒有響應(yīng)。
2 回答

蝴蝶不菲
TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以嘗試Application.DoEvents
從耗時(shí)的方法調(diào)用,但這也會(huì)處理各種消息,包括嘗試關(guān)閉表單等危險(xiǎn)消息。
如果您可以重新編寫代碼并將我們長期運(yùn)行的方法放在BackgroundWorker
.

郎朗坤
TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
正如您所說,它沒有響應(yīng)并且無法捕獲輸入。相反,您可以實(shí)現(xiàn)一個(gè)后臺(tái)線程在那里完成您的工作,因此您可以根據(jù)需要取消線程
- 2 回答
- 0 關(guān)注
- 99 瀏覽
添加回答
舉報(bào)
0/150
提交
取消