oxyplot-sharpdx icon indicating copy to clipboard operation
oxyplot-sharpdx copied to clipboard

Unhandled exception when calling InvalidatePlot

Open RistoPa opened this issue 8 years ago • 5 comments

Hi there,

I updated my current OxyPlot WPF project to use your SharpDX approach. It's crashing to unhandled exception when I call PlotView.InvalidatePlot(true). What could be causing this problem (exception below)? I have Windows 8.1 x64 with .NET 4.5.1.

Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. Exception Info: System.AccessViolationException at SharpDX.Direct2D1.SimplifiedGeometrySinkNative.AddLines_(SharpDX.Mathematics.Interop.RawVector2[], Int32) at SharpDX.Direct2D1.SimplifiedGeometrySinkNative.AddLines(SharpDX.Mathematics.Interop.RawVector2[]) at OxyPlot.SharpDX.CacherRenderContext.DrawLine(System.Collections.Generic.IList1<OxyPlot.ScreenPoint>, OxyPlot.OxyColor, Double, Double[], OxyPlot.LineJoin, Boolean) at OxyPlot.RenderingExtensions.DrawClippedLine(OxyPlot.IRenderContext, OxyPlot.OxyRect, System.Collections.Generic.IList1<OxyPlot.ScreenPoint>, Double, OxyPlot.OxyColor, Double, Double[], OxyPlot.LineJoin, Boolean, System.Collections.Generic.List1<OxyPlot.ScreenPoint>, System.Action1<System.Collections.Generic.IList1<OxyPlot.ScreenPoint>>) at OxyPlot.Series.LineSeries.RenderLine(OxyPlot.IRenderContext, OxyPlot.OxyRect, System.Collections.Generic.IList1<OxyPlot.ScreenPoint>) at OxyPlot.Series.LineSeries.RenderLineAndMarkers(OxyPlot.IRenderContext, OxyPlot.OxyRect, System.Collections.Generic.IList1<OxyPlot.ScreenPoint>) at OxyPlot.Series.LineSeries.RenderPoints(OxyPlot.IRenderContext, OxyPlot.OxyRect, System.Collections.Generic.IList1<OxyPlot.DataPoint>) at OxyPlot.Series.LineSeries.Render(OxyPlot.IRenderContext) at OxyPlot.PlotModel.RenderSeries(OxyPlot.IRenderContext) at OxyPlot.PlotModel.RenderOverride(OxyPlot.IRenderContext, Double, Double) at OxyPlot.PlotModel.OxyPlot.IPlotModel.Render(OxyPlot.IRenderContext, Double, Double) at OxyPlot.SharpDX.Wpf.PlotImage.Render(Boolean, Boolean) at OxyPlot.SharpDX.Wpf.PlotView.<InvalidatePlot>b__58_0()

RistoPa avatar Aug 09 '17 11:08 RistoPa

I am not able to reproduce this. I am using Win10 and .NET 4.5.2 so it might be related to one of those. Is anyone still having this issue?

Dunkhan avatar Mar 22 '18 14:03 Dunkhan

I'm having the same issue. Win 10 .NET 4.6.1.

TechnikEmpire avatar Jun 27 '18 06:06 TechnikEmpire

Issues persists even in 2.0.0-unstable0956

TechnikEmpire avatar Jun 27 '18 06:06 TechnikEmpire

I fixed it. I'll do a PR.

TechnikEmpire avatar Jun 27 '18 07:06 TechnikEmpire

I pushed to the wrong branch in my fork, and I'm way too busy to sort all that out right now. You need to move all of the code inside of InvalidatePlot inside of the dispatcher async invocation call just like this. The secondary, linked issue I reference can be observed by porting over the "Constant Changes" demo. This change fixes both.

TechnikEmpire avatar Jun 27 '18 07:06 TechnikEmpire