void QueueInference () { var doc = CU as XmlParsedDocument; if (defaultSchemaCompletionData != null || doc == null || doc.XDocument == null || inferenceQueued) return; if (inferredCompletionData == null || (doc.LastWriteTimeUtc - inferredCompletionData.TimeStampUtc).TotalSeconds >= 5 && doc.GetErrorsAsync().Result.Count <= inferredCompletionData.ErrorCount) { inferenceQueued = true; System.Threading.ThreadPool.QueueUserWorkItem (delegate { try { InferredXmlCompletionProvider newData = new InferredXmlCompletionProvider (); newData.Populate (doc.XDocument); newData.TimeStampUtc = DateTime.UtcNow; newData.ErrorCount = doc.GetErrorsAsync().Result.Count; this.inferenceQueued = false; this.inferredCompletionData = newData; } catch (Exception ex) { LoggingService.LogInternalError ("Unhandled error in XML inference", ex); } }); } }
void SetDefaultSchema () { var filename = DocumentContext.Name; if (filename == null) return; defaultSchemaCompletionData = XmlSchemaManager.GetSchemaCompletionDataForFileName (filename); if (defaultSchemaCompletionData != null) inferredCompletionData = null; else QueueInference (); defaultNamespacePrefix = XmlSchemaManager.GetNamespacePrefixForFileName (filename); }