2013-02-01 85 views
0

我希望這個問題不是太開放,但基本上我需要創建一個可以管理進程的程序。將要完成的處理將包含很多步驟,需要很長時間才能完成(生成報告並通過電子郵件發送等)。C#進程管理模式

管理流程將類似於方法簽名:

int StartProcess(string inputData) 
    { 
     return Process.Start(); 
    } 

    bool Pause(int processId) 
    { 
     return false; 
    } 

    bool ResumeProcess(int processId) 
    { 
     return false; 
    } 

    string GetProcessStatus(int processId) 
    { 
     return "running"; 
    } 

一部分,我不能完全得到周圍我的頭我怎麼會管理過程的國家(多進程需要頂級能夠立即運行)。

執行此類操作的最佳方式是將狀態信息存儲在數據庫中,然後在每個步驟完成時更新狀態字段?數據庫表是必需的嗎?

有沒有免費的第三方庫可以實現這樣的事情?我認爲它是一個相當普遍的問題。

喜歡的東西K2 blackpearl的或沒有花俏的用戶界面的另一個工作流應用程序...

+0

您是否檢查過Windows Workflow Foundation(WF 4.5)? –

+0

我相信你應該看看[工作流基金會](http://msdn.microsoft.com/en-us/vstudio/jj684582.aspx) – StuartLC

+0

nope沒有聽說過...會做一些讀它現在很快 – woggles

回答

1

這一切都取決於你的需求。

如果您需要管理長時間運行的進程或可以在計算機重新啓動後仍能運行的進程,那麼顯然您需要將進程和狀態信息存儲在數據庫中。

您還需要定義進程暫停時發生的情況。它是立即暫停還是先完成當前步驟?如果它立即停止,它是否存儲它的狀態,以便如果僅在重新啓動後才恢復,它可以繼續停留在哪裏? etc ...

基本上你可以說每個進程都可以在自己的線程上運行,並且你的進程管理器應該管理這些線程,並提供統一的方法來存儲它們的狀態。

總之,如果我們不知道自己的要求,我們不能多說。