예제 #1
0
파일: frmMain.cs 프로젝트: Sukasa/SeeSharp
        private void HandleError(object Sender, RenderingErrorEventArgs E)
        {
            IRenderer Renderer = (IRenderer)Sender;

            if (E.IsFatal)
            {
                Renderer.Abort();
            }
            if (!_RenderingConfig.IsPreview)
            {
                lock (_SkipErrors)
                {
                    // *** Alert user
                    if (_SkipErrors.Contains(E.ErrorCode))
                    {
                        return;
                    }

                    String ErrorMessage = String.Format("An error occurred while rendering: \r\n{0}", E.UserErrorMessage);
                    if (E.ShowInnerException)
                    {
                        ErrorMessage += E.ErrorException.Message + "\r\n";
                    }
                    if (!E.IsFatal)
                    {
                        ErrorMessage += "Ignore this error if it occurs again?";
                    }

                    DialogResult R = MessageBox.Show(ErrorMessage, E.IsFatal ? "Rendering Failed" : "Rendering Error", E.IsFatal ? MessageBoxButtons.OK : MessageBoxButtons.YesNoCancel, E.IsFatal ? MessageBoxIcon.Stop : MessageBoxIcon.Error);

                    if (R == DialogResult.Yes)
                    {
                        _SkipErrors.Add(E.ErrorCode);
                    }
                }
            }
        }