簡體   English   中英

如何暫停計時器線程

[英]how to pause the timer thread

我想暫停“定時器”線程....或者我可以說想將其置於“等待”模式,然后在完成某些操作后通知。

Timer _catchTimer = new Timer(); CatchAppNameTimer _catchTimerTask = new CatchAppNameTimer(_catchTimer); _catchTimer.schedule(_catchTimerTask, 0, 5000);

我的“ TimerTask(_catchTimerTask)”每次都顯示一個彈出屏幕...。該彈出屏幕有兩個按鈕-解鎖,取消。

基本上我想要直到用戶單擊....解鎖/取消btn之一,時間線程設置為等待模式.....當用戶單擊解鎖/取消按鈕之一時........ ....之后,時間線程才被通知。

目前,我在“ timertask” ...的運行方法中使用布爾變量來處理死鎖情況……也就是說,TimerTask每隔幾秒鍾就會被調用一次……即使已經彈出屏幕顯示.....

如下 :

public void run() { 


GlobalSingleton obj = null; 
  obj = GlobalSingleton.getInstance(); 
  if( obj.getShowDialog() ) 
        return;

   unlockField();
}

首次調用“ unlockFiled()”時........我將布爾變量設置為true(使用運行時存儲).......該值由getShowDialog()方法檢索。 和在

fieldChanged(Field field, int context) { }的兩個方法都是Unlock / Cancel按鈕.........我通過調用...將布爾變量的值設置為false。

GlobalSingleton obj = null; obj = GlobalSingleton.getInstance(); obj.setShowDialog(false);

但是正確的方法是不應再次啟動“計時器任務”。......直到用戶按下“取消阻止/取消”按鈕,並且控件退出fieldChanged(Field field, int context) { }方法。

我應該使用differnet線程來處理.... wait-基於布爾變量來通知Timer對象上的操作...。 我已經嘗試過這種方法..........但是無法找到解決方案...

如果有任何建議,我將不勝感激。

問候。

在我不了解的情況下,您有線程正在監聽某些事件並執行此事件。 Mayby生產者-消費者模式將有助於:

1您有將消息放入隊列的生產者

2您具有存儲消息的BlockingQueue

3您具有從BlockingQueue讀取消息的線程(如果隊列為空,則線程正在等待消息),並且取決於顯示/隱藏對話框的消息。

認為這將是最簡單明了的實現。

用另一個線程監視TimerTask,並在滿足條件時指定條件while循環,只是通知您的Timetask停止作業。

感謝BOSS和Alexey所做的貢獻,我用一個連續運行的線程睡眠了1秒鍾解決了我的問題。

我的解決方案在- 解決方案或在: 主線程上給出,如果您認為我的解決方案有幫助,請投票,因為我需要一些聲譽才能開始在黑莓機房聊天。

thnks。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM