我有大約5000個文件位於FTP中,所以我通過使用FTP下載這些文件,然後解壓縮文件,最後處理並推入到oracle數據庫中。除了處理和推入數據庫的一切都很好,我不知道爲什麼處理不會發生。我可以看到調試器擊中該方法,但它不會進入內部method.How解決這個問題?Task.Factory.StartNew不執行.net中的方法
var list = ftp.GetFileList(remotepath);
//-------------------
DateTime dt = DateTime.Now;
string st = String.Format("{0:yyyyMMdd}", dt);//20161120
Task[] myTasks = new Task[list.Count];
int i = 0;
foreach (string item in list)
{
{
if (item.StartsWith("GExport_") && (!item.ToUpper().Contains("DUM")) && (item.Contains(st)) && (!item.ToUpper().Contains("BLK")))
{
4gpath = item;
//Downloadfile()
ftp.Get(dtr["REMOTE_FILE_PATH"].ToString() + 4gpath , @localDestnDir + "\\" + dtr["SOURCE_PATH"].ToString());
download_location_hw = dtr["LOCAL_FILE_PATH"].ToString();
// Spin off a background task to process the file we just downloaded
myTasks[i++] = Task.Factory.StartNew(() =>
{
//Extractfile()
ExtractZipfiles(download_location_hw + "//" + huwawei4gpath, dtr["REMOTE_FILE_PATH"].ToString(),
dtr["FTP_SERVER"].ToString(), dtr["FTP_USER_ID"].ToString(),
dtr["TECH_CODE"].ToString(), dtr["VENDOR_CODE"].ToString());
//Extract the zip file referred to by download_location_hw
// Process the extracted zip file
ProcessFile()
});
}
}
}
Task.WaitAll(myTasks);
這裏ProcessFile()
方法不是在執行所有
編輯 有錯字在filepath
原因要點,謝謝你,但我的問題是,是否有任何同步問題,因爲第一個解壓縮文件,並同時間處理文件,其中文件不可用,它會在處理之前等待解壓縮 -
添加檢查while(!File.Exists("")) { Thread.Sleep(1000);
這樣做,使任何isssues?
你怎麼知道'ProcessFile'沒有被執行?你是否嘗試在該行上放置斷點? – wdosanjos
我把斷點放在那裏,可以看到它正在那裏,但沒有進入裏面,沒有數據被推入到數據庫中。其中文件被成功下載和提取 – peter
@peter可能你正在調試主要堆棧跟蹤線。 – mybirthname