近日,應專案要求,需要定時執行乙個更新任務。為了弘揚學習不餒精神,本人使用了兩種方式進行實現,分別是:1、利用單執行緒,本博文重點內容。2、利用oracle中的資料庫連線(dblink)先將兩個資料庫進行連線,之後通過儲存過程進行實現,這個以後再寫吧。今天呢,對單執行緒的實現方法進行詳細說明下。
首先說明下環境,本次使用的是.net framework 2.0/oracle 11g來完成,系統環境為windows 10;
第二,下面對單執行緒實現功能的主要**先貼出來再說;
1、首先為了**的簡潔和美觀,以及使用起來方便,我們宣告乙個委託,並定義乙個委託變數;
//宣告委託
public delegate void updatetextdelegate(string msg,string option);
//定義委託變數
public updatetextdelegate updatetext;
2、例項化委託,在窗體初始化時,將該委託進行例項化(委託例項化之後還是委託,和類不一樣,類叫例項或者物件^_^);
//例項化委託
updatetext = new updatetextdelegate(updatetextfunction);
3、由於該工具中只需要執行資料庫更新和資訊輸出功能,所以委託函式如下:
/// /// 委託函式
///
///
///
private void updatetextfunction(string msg, string option)
else if (option == "end")
else if(option == "run")
}
4、正主來了。上面說了,該工具是利用單執行緒 實現的,所以我們用到了system.threading命名空間下的timer和thread,**如下:
//執行緒中的定時器
timer = new system.threading.timer(new timercallback(timer_tick), null, convert.toint32(this.textbox2.text) * 1000 * 60 * 60, convert.toint32(this.textbox2.text) * 1000 * 60 * 60);
timer.change(0,convert.toint32(this.textbox2.text)*1000*60*60);
//執行緒宣告
thread thread = new thread(new threadstart(delegate ));
thread.name = "myupdatethread";
//執行緒啟動
thread.start();
5、既然執行緒已經啟動,那麼就要考慮,在該執行緒上執行什麼任務,該怎樣執行;
this.begininvoke(updatetext, "", "run");//在建立控制項的基礎控制代碼所在的執行緒上,用指定的引數非同步指定委託
6、接下來呢,就是執行什麼任務了,在這裡我就不寫了,上面的可以使用於任何任務當中。
中午了,吃飯不積極,思想有問題,哈哈,吃飯吃飯
單執行緒任務佇列
下邊 解決了 避免建立新執行緒 規避了執行緒池的建立過多執行緒 解決浪費資源問題using system using system.collections.generic using system.text using system.threading namespace mythreadpool ...
Python 定時執行執行緒 執行任務
最常用的是以下的方法。不過缺點是sleep函式堵塞了主線程,會造成無妨同時執行其他的程式。usr bin env python encoding utf 8 import time deftask print task deftimer n while true print time.strftim...
Spring Quartz實現定時執行任務的配置
1.要想使用quartz 必須要引入相關的包 以下是我在專案中gradle中的配置 compile org.quartz scheduler quartz 2.1.1 2.scheduler的配置 mockjobschedule 3.trigger的配置 4.jobdetail的配置 5.業務類的配...