單執行緒實現定時執行任務功能

2021-07-28 03:25:21 字數 1685 閱讀 2581

近日,應專案要求,需要定時執行乙個更新任務。為了弘揚學習不餒精神,本人使用了兩種方式進行實現,分別是: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.業務類的配...