private void StartRendering(string pbrtCode) { _cancellationTokenSource = new CancellationTokenSource(); var token = _cancellationTokenSource.Token; Scene scene; Renderer renderer; try { SceneReader.Read(new StringReader(pbrtCode), out scene, out renderer); } catch (Exception ex) { _errorList.AddItem(ErrorListItemType.Error, ex.Message, Path); _shell.ShowTool(_errorList); return; } OutputBitmap = renderer.Output; Task.Factory.StartNew(() => renderer.Render(scene, token), token) .ContinueWith(t => { switch (t.Status) { case TaskStatus.Faulted: _errorList.AddItem(ErrorListItemType.Error, t.Exception.Message); break; } }); }
private void ProcessResult(ReflectionEmitResult result) { _errorList.Items.Clear(); if (!result.Success) { foreach (var diagnostic in result.Diagnostics) { if (!diagnostic.Location.IsInSource) { throw new NotSupportedException("Only support source file locations."); } var itemType = GetItemType(diagnostic.Info.Severity); var description = diagnostic.Info.GetMessage(); var lineSpan = diagnostic.Location.GetLineSpan(false); _errorList.AddItem(itemType, description, lineSpan.Path, lineSpan.StartLinePosition.Line, lineSpan.StartLinePosition.Character, () => { var openDocumentResult = new OpenDocumentResult(lineSpan.Path); IoC.BuildUp(openDocumentResult); openDocumentResult.Execute(null); }); } } if (result.IsUncollectible) { _errorList.AddItem(ErrorListItemType.Message, "The compiled assembly is not garbage collectible."); } }
protected override void WriteInternal(LogLevel level, object message, Exception exception) { if (message != null) { _display.AddItem(ErrorListItemType.Message, message.ToString()); } if (exception != null) { _display.AddItem(ErrorListItemType.Error, exception.ToString()); } }
private void ProcessResult(EmitResult result) { foreach (var diagnostic in result.Diagnostics) { if (!diagnostic.Location.IsInSource) { throw new NotSupportedException("Only support source file locations."); } var itemType = GetItemType(diagnostic.Severity); var description = diagnostic.GetMessage(); var lineSpan = diagnostic.Location.GetLineSpan(); _errorList.AddItem(itemType, description, lineSpan.Path, lineSpan.StartLinePosition.Line, lineSpan.StartLinePosition.Character, () => { var openDocumentResult = new OpenDocumentResult(lineSpan.Path); IoC.BuildUp(openDocumentResult); openDocumentResult.Execute(null); }); } }