我有數以千計的文件位於FTP服務器。我的任務是從ftpserver下載文件,然後解壓縮文件,然後處理文件。對於下載我使用Tamir
庫和解壓縮我使用Ionic.zip
然後處理文件。如何通過在c#中使用線程來加緊工作?
當我使用的線程,下載從FTP服務器的文件停止,不知道其中的原因,也許FTP服務器不允許使用線程下載文件。然後我使用線程來解壓縮文件並進行處理。這也因爲錯誤而失敗,如
進程無法訪問文件'文件',因爲它正在被另一個進程使用。
所以現在我正在依次做的一切。代碼原型如下圖所示
static void Main(string[] args)
{
string FTPpah = "d://Testpath";
DonloadUnzipProcessFile(FTPpah);
}
private static void DonloadUnzipProcessFile(string FTPpah)
{
string Localpath = @"e://testpath";
//Using Tamir libraryr
DownloadFile(FTPpah,Localpath);
//Ionic.zip library
UnzipFile(Localpath);
//c#code
ProcessFile(Localpath);
}
有沒有什麼辦法可以提高使用Threads
或Process
這項任務?
編輯
從FTP服務器上下載不能用線程來完成?如果是這樣,我想通過使用任務解壓縮和處理。因此,我將創建10個任務(TPL),每個任務需要10個文件並解壓縮,然後執行10個任務,這樣的情況有可能嗎?
搜索TPL數據流 –
塔米爾/ SharpSSH庫是SFTP庫,而不是一個FTP庫。這是完全不同的東西+這是一個死了的項目,不會維持多年。不要使用它! –
異步等待是要走的路,這樣的IO操作,不得在線程完成,會降低系統的可擴展性 –