私は約5000のファイルをFTPに置いているので、FTPを使用してファイルをダウンロードしてからファイルを解凍し、最後に処理してOracleデータベースにプッシュします。データベースがすべて正常に機能するようにプッシュすると、なぜ処理がうまくいかないのかわかりません。デバッガがそのメソッドにヒットするのを見ることができますが、内部のmethod.Howには入っていません。ここでTask.Factory.StartNewでメソッドを実行していない。
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()
方法がで実行されていないすべての
EDIT filepath
原因の問題で、おかげでタイプミスがありましたが、最初のファイルと同じファイルを解凍するので、私の質問ですが、任意の同期の問題がありますファイルが利用できなかった時のプロセスファイル - 処理前に解凍を待つか -
チェックが追加されましたwhile(!File.Exists("")) { Thread.Sleep(1000);
これは何ですか?
「ProcessFile」が実行されていないことをどのように知っていますか?あなたはその行にブレークポイントを置こうとしましたか? – wdosanjos
私はブレークポイントをそこに置くとそこにぶつかっているが、内部には入っておらず、データベースのどれもがデータベースにプッシュされていないことがわかる。ファイルがダウンロードされ、正常に抽出された。 – peter
@peterおそらくあなたはメインのスタックトレース糸。 – mybirthname