使用 Windows 远程桌面连接时出现 OnRenderSurfaceBaseLoaded 空异常。在 Windows 10 上的 SciChart 4.2.3.10193 和 v5.1.0.11299 上测试。下面有相关帖子,但在 SciChart v5.1.0.11299 上没有解决此问题
https://www.scichart.com/questions/question/nullreferenceexception-when-using-direct3d
Exception 1: Object reference not set to an instance of an object.
at SciChart.Drawing.DirectX.Context.D3D10.Direct3D10RenderSurface.OnRenderSurfaceBaseLoaded(Object sender, RoutedEventArgs e)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.BroadcastEventHelper.BroadcastEvent(DependencyObject root, RoutedEvent routedEvent)
at System.Windows.BroadcastEventHelper.BroadcastLoadedEvent(Object root) at MS.Internal.LoadedOrUnloadedOperation.DoWork()
at System.Windows.Media.MediaContext.FireLoadedPendingCallbacks() at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks() at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
at System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
我们所做的更改包括调用 IRenderSurface.Dispose() 以使用 LinearGradient Brush 释放源自 CustomRenderableSeries 的内存使用量
if(scs.GetValue(SciChartSurfaceBase.RenderSurfaceProperty) is IRenderSurface renderSurface)
renderSurface.Dispose();