@@ -97,8 +97,22 @@ public override async Task StartAsync(CancellationToken cancellationToken)
9797 this . LogInformation ( $ "Created ProcessedDirectory at [{ fileProfile . ProcessedDirectory } ]") ;
9898 Directory . CreateDirectory ( fileProfile . FailedDirectory ) ;
9999 this . LogInformation ( $ "Created FailedDirectory at [{ fileProfile . FailedDirectory } ]") ;
100- }
101100
101+ String [ ] inprogressList = Directory . GetFiles ( $ "{ fileProfile . ListeningDirectory } //inprogress") ;
102+
103+ if ( inprogressList . Any ( ) )
104+ {
105+ this . LogInformation ( $ "{ inprogressList . Length } files in progress detected in [{ fileProfile . ListeningDirectory } //inprogress") ;
106+
107+ // Now move these to the listening directory
108+ foreach ( String s in inprogressList )
109+ {
110+ FileInfo fi = new FileInfo ( s ) ;
111+ fi . MoveTo ( $ "{ fileProfile . ListeningDirectory } //{ fi . Name } ") ;
112+ }
113+ }
114+ }
115+
102116 await base . StartAsync ( cancellationToken ) ;
103117 }
104118
@@ -132,17 +146,18 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
132146 try
133147 {
134148 List < Task > fileProcessingTasks = new List < Task > ( ) ;
135- var fileProfiles = await this . FileProcessorManager . GetAllFileProfiles ( stoppingToken ) ;
149+ List < FileProfile > fileProfiles = await this . FileProcessorManager . GetAllFileProfiles ( stoppingToken ) ;
150+
136151 foreach ( FileProfile fileProfile in fileProfiles )
137152 {
138153 this . LogInformation ( $ "About to look in { fileProfile . ListeningDirectory } for files") ;
139- var files = Directory . GetFiles ( fileProfile . ListeningDirectory ) . Take ( 1 ) . ToList ( ) ; // Only process 1 file per file profile concurrently
140-
141- foreach ( String file in files )
154+ IDirectoryInfo listeningDirectory = this . FileSystem . DirectoryInfo . FromDirectoryName ( fileProfile . ListeningDirectory ) ;
155+
156+ List < IFileInfo > files = listeningDirectory . GetFiles ( fileProfile . ListeningDirectory ) . OrderBy ( f => f . CreationTime ) . Take ( 1 ) . ToList ( ) ; // Only process 1 file per file profile concurrently,
157+
158+ foreach ( IFileInfo fileInfo in files )
142159 {
143- this . LogInformation ( $ "File { file } detected") ;
144-
145- IFileInfo fileInfo = this . FileSystem . FileInfo . FromFileName ( file ) ;
160+ this . LogInformation ( $ "File { fileInfo . Name } detected") ;
146161
147162 String inProgressFolder = $ "{ fileProfile . ListeningDirectory } /inprogress/";
148163 if ( this . FileSystem . Directory . Exists ( inProgressFolder ) == false )
@@ -152,7 +167,7 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
152167 String inProgressFilePath = $ "{ fileProfile . ListeningDirectory } /inprogress/{ fileInfo . Name } ";
153168 fileInfo . MoveTo ( inProgressFilePath , true ) ;
154169
155- var request = this . CreateProcessFileRequest ( fileProfile , inProgressFilePath ) ;
170+ IRequest request = this . CreateProcessFileRequest ( fileProfile , inProgressFilePath ) ;
156171 fileProcessingTasks . Add ( this . Mediator . Send ( request ) ) ;
157172 }
158173 }
0 commit comments