2016-09-07 39 views
1

在Nopcommerce中,計劃任務通常由計時器啓動,但您也可以手動啓動它。如何查看計劃任務是手動啓動的,但不是由nopcommerce中的計時器啓動

是否有可能在代碼中作出區分,無論任務是由計時器啓動還是由手動啓動?

在我來說,我希望有一個任務只在Saterdays運行,因爲它是一個大的batchjob:

if (DateTime.Now.DayOfWeek != DayOfWeek.Saturday) 
{ 
    return; // Don't do the task 
} 

但我想啓動,如果形勢需要它手動運行它。

bool StartedManually = _Some_magic_here_Please; // <- what to do here? 
if (DateTime.Now.DayOfWeek != DayOfWeek.Saturday && !StartedManually) 
{ 
    return; // Don't do the task 
} 

回答

1

不支持沒有任何源代碼修改,此外TaskManager和TaskThread類沒有實現任何接口,他們沒有通過IoC容器註冊,所以你不能做所需的更改沒有在Nop.Services項目的變化,那裏對插件或擴展沒有任何可能性。

你可以通過複製你的任務來解決這個問題,你可以保留一個任務,在策略者中啓用星期幾約束並且禁用任何星期幾約束的其他任務(僅用於手動執行)。可以從管理中啓動禁用的任務

它不是最乾淨的解決方案,但它只需要稍稍更改,從另一個任務實施中繼承一個任務實現。

0

在星期六運行任務只設置期限秒到604800秒(7天),然後啓動任務首次在週六(改變任何屬性,然後重新啓動應用程序)。手動運行任務不會影響計劃。 因此,您在任務執行過程中不需要任何特定的邏輯。

+0

HI @RomanovM。感謝您的回答。但是你沒有明白這個問題的重點,你能否區分一個工作是否是手動開始的。 –