次のコードを使用してa.gzファイルを解凍しています。膨大な数のファイルがあるので、私はこのコードを実行するためにTPLタスクを使用しています。しかし、私は以前は.NET
を取得していました。例外を回避する方法プロセスは別のプロセスによって使用されているため、ファイルにアクセスできません。 in .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());
}
}
}
private static void ExtractZipfiles(string download_location_hw,string remotepath,string server,string userid,string tech,string vendor)
{
if (download_location_hw.Contains(".gz"))
{
DirectoryInfo directorySelected = new DirectoryInfo(Path.GetDirectoryName(download_location_hw));
foreach (FileInfo fileToDecompress in directorySelected.GetFiles("*.gz"))
{
Decompress(fileToDecompress);
}
}
}
このメソッドを呼び出すコードを表示できますか?特に、_TPL_ビット – MickyD
私は呼び出しコード – peter
を投稿しました。 'myTasks'の使い方は? –