python執行緒的暫停與繼續 執行緒暫停與繼續實現

2021-10-11 02:02:18 字數 1565 閱讀 6938

c#執行緒暫停與繼續解決方案

昨天, 老師要我們每個人交乙個關於黑客方面的程式,想了半天發現埠掃瞄工具好像好寫點,從昨天寫到今天基本快完成了,給大家看下效果,不要笑話我哦哦(~~)

圖1 埠掃瞄器

這個程式裡面有一些地方不太滿意,就是掃瞄的暫停與繼續實現時,使用的是thread.suspend和thread.resume而這兩個方法,在vs2010裡提示已經過時,不建議使用,在網上查閱了一些資料,發現有個事件通知的方法很好,事件通知的大致原理是,執行緒在執行過程中暫停,等到其他執行緒通知時才繼續執行下去,這樣的確是可以起到暫停與繼續的效果。但是,這種暫停是被動的,我需要的是主動暫停,即點下按鈕,執行緒暫停,再點下按鈕,執行緒繼續執行。

下面是乙個下的demo:

執行截圖:

圖2 demo執行效果

c#源**:

usingsystem;

usingsystem.windows.forms;

usingsystem.threading;

namespace執行緒暫停與繼續實現

publicpartialclassform1 : form

//計時器

privatesystem.windows.forms.timer tm =newsystem.windows.forms.timer();

//自動重置事件類

//主要用到其兩個方法 waitone() 和 set() , 前者阻塞當前執行緒,後者通知阻塞執行緒繼續往下執行

autoresetevent autoevent = newautoresetevent(false);

publicform1()

initializecomponent();

progressbar.checkforillegalcrossthreadcalls = false;

tm.interval = 1;

tm.tick += neweventhandler(tm_tick);

//計時器 事件

voidtm_tick(objectsender, eventargs e)

autoevent.set(); //通知阻塞的執行緒繼續執行

//啟動

privatevoidbtnstart_click(objectsender, eventargs e)

tm.start();

thread t = newthread(dowork);

t.start();

privatevoiddowork()

while(progressbar1.value < progressbar1.maximum)

progressbar1.performstep();

autoevent.waitone(); //阻塞當前執行緒,等待通知以繼續執行

//暫停

privatevoidbtnsuspend_click(objectsender, eventargs e)

tm.stop();

//繼續

privatevoidbtnresume_click(objectsender, eventargs e)

tm.start();

執行緒暫停和繼續實現

開啟乙個子執行緒來顯示發動機上的執行時間,如果發動機暫停執行,那麼這個執行緒也會暫停,發動機又開動的時候,執行緒繼續開啟,資料也是連貫著的 timer timer newtimer timertask task newtimertask timer.schedule task,0 這樣的用法只能停止...

動畫暫停與繼續

暫停 計算暫停時間 cftimeinterval pausetime myview.layer converttime cacurrentmediatime fromlayer nil 把圖層速度設定為0 myview.layer speed 0 設定時間偏移值為暫停時時間 myview.layer...

C 執行緒暫停與繼續解決方案

昨天,老師要我們每個人交乙個關於黑客方面的程式,想了半天發現埠掃瞄工具好像好寫點,從昨天寫到今天基本快完成了,給大家看下效果,不要笑話我哦哦 圖1 埠掃瞄器 這個程式裡面有一些地方不太滿意,就是掃瞄的暫停與繼續實現時,使用的是thread.suspend和thread.resume而這兩個方法,在v...