2014-03-03 90 views
0

在我們當前實現的C#windows服務中,我必須包含一個方法來在源文件夾和目標文件夾之間執行文件複製。我假設我不應該使用「後臺工作者」,因爲這是基於服務而不是基於UI的。我應該包含異步文件IO操作嗎?或者我應該簡單地產生一個後臺線程?Windows服務中的異步操作

+0

如果可能的話你應該使用異步IO的API。創建後臺線程僅用於複製文件是沒有意義的。 – Noseratio

回答

0

如果複製過程非常耗時,我肯定會建議跨越一個專門用於複製過程的新後臺工作者(線程),以便主服務線程可以自由地做更重要和有意義的事情。 另外,您可能需要複製後臺工作者將屬性公開給主服務線程複製過程的狀態,即未啓動,正在進行,已完成。

檢查這裏的備註部分:

msdn.microsoft.com/en-us/library/

+0

我只想了解後臺工作線程是否可以用於非基於UI的應用程序(如服務?) – user759913

+0

它專門用於非UI操作。請檢查這裏的「備註」部分:http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker%28v=vs.110%29.aspx – Rami

0
void WindowsService() 
{ 
    // ... 
    ThreadPool.QueueUserWorkItem(new WaitCallback(ProcessFile), a); 
    // ... 
    // This code executes without waiting for ProcessFile to complete 
} 

private void ProcessFile(object a) 
{ 
    // Perform File I/O here 
} 

通過http://www.dotnetperls.com/threadpool