2017-11-10 3 views
-1

xmlファイルをcsvに変換するスケジューラで動作するアプリケーションがあります。 xmlファイルの処理中にエラーが発生した場合、xmlファイルは別の無効なフォルダに転送されます。 問題は、変換されるために転送される大きなxmlファイルがあり、転送される前に スケジューラアプリケーションがそのファイルを無効なファイルとみなして無効なフォルダに転送するため、ファイルを拒否することです。 実際、xmlファイルはcsvに変換する準備ができていませんでしたが、私のアプリケーションはXMLファイルを一度見て、それをcsvに変換して拒否しようとします。 xmlファイルが準備完了であるかどうかを確認する方法はありますか?まだ転送されていますか?xmlファイルがまだ転送されているかどうかを確認する#

これは私が試したどのような解決策である:(進行中のテスト)

long fileSize = 0; 
currentFile = new FileInfo(path); 

while (fileSize < currentFile.Length)//check size is stable or increased 
{ 
fileSize = currentFile.Length;//get current size 
System.Threading.Thread.Sleep(500);//wait a moment for processing copy 
currentFile.Refresh();//refresh length value 
} 

は、それから私は、XMLファイルのサイズにいくつかの時間を確認することができますxmlファイル

+0

_ "xmlファイルが準備完了かどうかを確認する方法はありますか?"それを読んで、有効であれば準備が整っています。それが有効でない場合、それは準備ができていません。何か試しましたか?別のオプションは、ファイルを書き込むときにファイルの共有を許可しないようにすることです。そのため、他のプログラムが書き込みを完了して終了するまで、アプリケーションはファイルを開くことができません。他にも多くのメカニズムがあります。あなたの質問は広すぎます。いくつかの研究を行い、_何かを試してみるべきです。 –

+0

@Peter現在、私はそれを行う方法を検索しています。実際にはxmlファイルは、私は手を持っていないファイルです、xmlファイルは、フォルダに入って、私はそれを読んで、csvに変換する必要があります。実際に私のアプリは、ファイルがフォルダに表示されたら変換しようとするので、使用中のように見えません。 xmlでは、タグが適切に終了しないとファイルが拒否されます。したがって、即座に読み込むとエラーが発生し、ファイルを拒否します。私はファイルサイズが継続的に処理されていることを確認できますか?どんな考え? – Lutch

+0

ファイルはどのように転送されていますか。エラーは転送関数にあり、xmlをチェックしてコードをクルージングしようとするべきではありません。コードに例外ハンドラがあると、エラーが発生したときに正しくレポートできます。 – jdweng

答えて

1

の転換を進めます。同じ結果が複数返された場合は、ファイルが完全に転送されたとみなすことができます。

+0

私はこれを試しました、ありがとう、私はコードを更新する – Lutch

0

スレッドを使用してxml転送操作を行うことができます。スレッドが完了したかどうかを確認することができます。 変換が完了したら、変換処理を行うことができます

関連する問題