使用Windows远程桌面连接时OnRenderSurfaceBaseLoaded null异常

时间:2018-05-14 18:31:18

标签: wpf windows scichart

使用Windows远程桌面连接时,

OnRenderSurfaceBaseLoaded null异常。在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();

1 个答案:

答案 0 :(得分:1)

根据SciChart's website,应该支持远程桌面而不会发生任何崩溃。

  

问:DirectX渲染器是否可以通过远程桌面工作?

     

答:我们使用D3DImage,这是一个允许共享DirectX的Microsoft控件   内容与WPF,避免空域问题,并允许快速互操作   在WPF的DirectX9和DirectX10渲染之间。

     

不幸的是D3DImage有一个bug,一个令人讨厌的bug。它不会工作   远程桌面,如果您的应用程序是.NET4.0!它会工作   .NET4.5及更高版本的远程桌面。

     

自SciChart v4以来,我们开发了SciChart的解决方法   DirectX现在可以通过远程桌面工作。这是自动的,没有   需要将更改应用于您的代码。

我建议如果问题仍然出现在最新版本(checking latest nightly from NuGet)中以打包代码以重现并将其发送到tech support