2017-01-11 5 views
-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()や他の方法で終了後に開始から実行)。

+1

のOutOfMemory例外のためにリンクの下で解決策を持っていますか?私は無限のループが好きではありません...私は緊張します – Pikoh

+0

あなたがそれを望むなら、再帰関数としてあなたの機能を作ってください... – tabby

+0

もう 'goto'を使用しないでください。 'while'、' do'、 'for'や' foreach'のようなもっと良いアプローチがあります。あなたのケースでは、すでに述べたPikoが最もよくマッチするwhile(true)が、これは決して終わりのないループです。 – HimBromBeere

答えて

関連する問題