/// <summary> /// Parses the specified file on disk. /// </summary> /// <param name="filename"></param> public void EnqueueFile(IProjectEntry projEntry, string filename) { var severity = Severity.Ignore; EnqueWorker(() => { for (int i = 0; i < 10; i++) { try { if (!File.Exists(filename)) { break; } using (var reader = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete)) { _parser.ParseFile(projEntry, filename, reader, severity); return; } } catch (IOException) { // file being copied, try again... Thread.Sleep(100); } catch (UnauthorizedAccessException) { // file is inaccessible, try again... Thread.Sleep(100); } } IGeneroProjectEntry gEntry = projEntry as IGeneroProjectEntry; IAnalysisCookie cookie = null; Genero4glAst node = null; if (gEntry != null) { // failed to parse, keep the UpdateTree calls balanced gEntry.UpdateTree(node, cookie); } }); }