DNN調度解決方案是在DNN2.1.1開始引進的,它通過提供一個線程池管理調度任務來實現了多線程調度服務。該線程池允許可重用在池中現有的線程,而不需要殺死線程,即而生成新線程的無效率做法。
無疑的,創建一個多線程的應用程序是比較繁瑣的,你不得不費盡心思去防止不出現類似兩個線程同時讀寫同一個對象的現象。為了達到實現一個可靠的多線程應用程序,DotNet中存在一些ReadWriteLock的實例去鎖定和解鎖你需要進行讀寫操作的對象於達到不出現死鎖的瓶頸。
首先不妨先看看在Web.config文件裡邊DNN調度服務的相關信息:
屬性設置:
debug – 若這個屬性設置為true,則會產生一些有助於調試DNN調度服務的一些記錄信息條目。當你在調試DNN調度程序時,這些會給你足夠的信息,盡管調試多線程應用程序是一特繁瑣的過程。
maxThreads – 設置調度服務具體在線程池中最大的線程數目,默認為-1,這意味這由調度服務程序自主決定(在調度服務中,默認最大為10)。若你設置該項為大於零的某個數目,則這就是線程池中最大的數目。
enabled – 調度服務開啟屬性,若設置為fasle,則意味著禁止所有的調度服務。
接著讓我們看看DNN裡是如何使用調度服務的,在頂端的頁簽菜單上能找到如:
點擊Schedule,將進入Schedule頁面,如下圖,在這個頁面上,你可看到哪個調度任務已被開啟和禁止以及運行任務的頻率,失效重試的時間間隔,下次開始啟動調度服務時間。而在下表每個任務都有兩個鏈接:a)編輯頁面鏈接 b)查看歷史鏈接 (在下邊會有提到)