-3
小さなヘルプが必要です。私はC#でFile watcher関数を書いています。要件は、Loopで継続する必要があることです。私はデータベースに異なるファイルの場所を格納しています。これはデータベースから読み込まれ、リストオブジェクト_fileLocationListに格納された詳細です。 。C#でForeachループを再起動するか、リストを自動的に繰り返す方法
コード:
protected List<FileLocation> _fileLocationList = new List<FileLocation>();
_fileLocationList == GetFileLocation();
public void StartFileWatchers()
{
try
{
Start :
logger.Log(LOG_TYPE.LOG_TYPE_FILE, "** Inside StartFileWatchers() Starting file watchers for each filelocation **");
foreach (FileLocation fileLocation in _fileLocationList)
{
try
{
Start(_cancelToken, DefaultFileDownloadInterval, fileLocation);
}
catch (Exception ex)
{
logger.Log(LOG_TYPE.LOG_TYPE_FILE, "Error inside Foreach Loop StartFileWatchers() " + ex);
}
finally
{
logger.Log(LOG_TYPE.LOG_TYPE_FILE, "Clear Memory inside finally ");
IDisposable disposable = _fileLocationList as System.IDisposable;
if (disposable != null) disposable.Dispose();
}
}
logger.Log(LOG_TYPE.LOG_TYPE_FILE, "Loop end ");
goto Start;
}
catch (Exception ex)
{
logger.Log(LOG_TYPE.LOG_TYPE_DATABASE, "Error inside StartFileWatchers " + ex, TYPE_MESSAGE.UNKNOWN_ERROR);
}
}
私はその一つのループの後、私はメモリ例外」とアプリケーションのクラッシュから抜け出すのです実行
は、私はまた、代わりに、GOTOのWHILEループを試してみました
エラー:
UNKNOWN_ERROR Message : Unable to update process entry so initiating shutdown : System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Threading.Thread.StartInternal(IPrincipal principal, StackCrawlMark& stackMark)
私は無限にリストを反復したいと思いますorder(foreach()や他の方法で終了後に開始から実行)。
のOutOfMemory例外のためにリンクの下で解決策を持っていますか?私は無限のループが好きではありません...私は緊張します – Pikoh
あなたがそれを望むなら、再帰関数としてあなたの機能を作ってください... – tabby
もう 'goto'を使用しないでください。 'while'、' do'、 'for'や' foreach'のようなもっと良いアプローチがあります。あなたのケースでは、すでに述べたPikoが最もよくマッチするwhile(true)が、これは決して終わりのないループです。 – HimBromBeere