通过 Teamviewer 连接时 WPF 应用程序崩溃
Posted
技术标签:
【中文标题】通过 Teamviewer 连接时 WPF 应用程序崩溃【英文标题】:WPF application crashes when connected via Teamviewer 【发布时间】:2017-11-03 11:25:01 【问题描述】:将 teamviewer 连接到运行 WPF 应用程序的设备时出现问题。如果建立此连接,我的 WPF 应用程序将崩溃并出现以下异常:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ComponentModel.Win32Exception: Cannot create a file when that file already exists
at MS.Win32.UnsafeNativeMethods.GetWindowText(HandleRef hWnd, StringBuilder lpString, Int32 nMaxCount)
at System.Windows.Automation.Peers.WindowAutomationPeer.GetNameCore()
at System.Windows.Automation.Peers.AutomationPeer.UpdateSubtree()
at System.Windows.ContextLayoutManager.fireAutomationEvents()
at System.Windows.ContextLayoutManager.UpdateLayout()
at System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)
at System.Windows.Media.MediaContext.InvokeOnRenderCallback.DoWork()
at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
at System.Windows.Media.MediaContext.AnimatedRenderMessageHandler(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)
at System.Windows.Threading.DispatcherOperation.InvokeImpl()
at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Threading.DispatcherOperation.Invoke()
at System.Windows.Threading.Dispatcher.ProcessQueue()
at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
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)
at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
at System.Windows.Application.RunDispatcher(Object ignore)
at System.Windows.Application.RunInternal(Window window)
at System.Windows.Application.Run(Window window)
这个问题好像和描述的一样 here.
在有关此问题的 cmets 中,提到了剪贴板的使用可能是导致此问题的原因。但我的 WPF 应用程序不使用剪贴板。
希望有人能帮我找出这个异常的原因。
【问题讨论】:
从链接的 SO 问题中的 cmets 和异常跟踪中,我会说该应用程序正在尝试访问某些 win32 功能,而 TeamViewer 没有任何功能。您可以尝试在抛出异常时捕获异常并找到更多信息吗?您可能还想从堆栈跟踪中删除您的公司名称。 我认为需要更多信息,例如抛出异常的代码片段 1 - 您尝试过简单的测试应用程序吗? 2-在您的情况下,当您创建远程连接时,应用程序已经运行并崩溃了? 我遇到了同样的问题。追不上去。显然这是 WPF 和 TeamViewer 之间的事情,因为我没有看到堆栈跟踪中包含我自己的任何类或方法。 【参考方案1】:我自己解决了这个问题。这是由 MainWindow 的空标题引起的。设置好之后问题就解决了。
【讨论】:
以上是关于通过 Teamviewer 连接时 WPF 应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章
通过Cisco ASA inspection拦截Teamviewer
如何修復TeamViewer錯誤waitforconnectfailed