Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 框架代码中的InvalidAsynchronousStateException-我需要关心吗?_C#_.net_Wpf_Multithreading_Winforms - Fatal编程技术网

C# 框架代码中的InvalidAsynchronousStateException-我需要关心吗?

C# 框架代码中的InvalidAsynchronousStateException-我需要关心吗?,c#,.net,wpf,multithreading,winforms,C#,.net,Wpf,Multithreading,Winforms,我有一个WPF应用程序,它有两个WinForms控件 偶尔,我会在.NET SystemEvents线程上遇到一些第一次机会InvalidAsynchronousStateException异常,这些异常总是被框架代码捕获(因此我只能在Visual Studio的输出窗口中看到它们) System.ComponentModel.InvalidAsynchronousStateException:“调用该方法时出错。目标线程不再存在。' 堆栈跟踪如下所示: > System.Window

我有一个WPF应用程序,它有两个WinForms控件

偶尔,我会在
.NET SystemEvents
线程上遇到一些第一次机会
InvalidAsynchronousStateException
异常,这些异常总是被框架代码捕获(因此我只能在Visual Studio的输出窗口中看到它们)

System.ComponentModel.InvalidAsynchronousStateException:“调用该方法时出错。目标线程不再存在。'

堆栈跟踪如下所示:

>   System.Windows.Forms.dll!System.Windows.Forms.WindowsFormsSynchronizationContext.Send(System.Threading.SendOrPostCallback, object)
    System.dll!Microsoft.Win32.SystemEvents.SystemEventInvokeInfo.Invoke(bool, object[])    
    System.dll!Microsoft.Win32.SystemEvents.RaiseEvent(bool, object, object[])
    System.dll!Microsoft.Win32.SystemEvents.OnUserPreferenceChanging(int, System.IntPtr, System.IntPtr)
    System.dll!Microsoft.Win32.SystemEvents.WindowProc(System.IntPtr, int, System.IntPtr, System.IntPtr)
    [Native to Managed Transition]
    [Managed to Native Transition]
    System.dll!Microsoft.Win32.SystemEvents.WindowThreadProc()
    mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, object, bool)
    mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, object, bool)
    mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, object)
    mscorlib.dll!System.Threading.ThreadHelper.ThreadStart()
异常总是在应用程序启动和运行时引发,而不是在启动时引发,因此主UI线程肯定是可用的

我需要关心吗?这是一个.NET Framework错误/功能,还是我的应用程序的错误/配置错误? 我很难理解是否出了什么问题。我看不到对我的应用程序有任何直接影响(没有死锁,没有崩溃,没有GUI故障),但谁知道呢


Windows 10、.NET Framework 4.7。

我会在乎的……但那只是我。如果时间不是问题,我会尝试跟踪您的代码,看看它在哪里。@DavidBentley,这不在我的代码中。这是在框架代码中。即使异常是在框架中引发的,也有可能是使用框架的任何东西造成的。这可能是良性的,框架开发人员可以看到,但类似的一个很好的例子是调用
Window.Close
,然后再调用
Window.Show
。您在表示框架中得到一个“隐藏”异常,但它本质上是由开发人员引起的。@DavidBentley,在本例中不是。如果查看堆栈跟踪,您会注意到整个序列在.NET系统事件线程上运行,并由操作系统事件触发。
WindowsFormsSynchronizationContext
也由WinForms管理,不依赖于开发人员的代码。啊,是的。我猜它一定是在WPF中使用Winforms控件。您正在使用什么控件?我只在WPF中使用过WinForms中的系统托盘控件,从未见过这个错误。我会在乎的…但那只是我自己。如果时间不是问题,我会尝试跟踪您的代码,看看它在哪里。@DavidBentley,这不在我的代码中。这是在框架代码中。即使异常是在框架中引发的,也有可能是使用框架的任何东西造成的。这可能是良性的,框架开发人员可以看到,但类似的一个很好的例子是调用
Window.Close
,然后再调用
Window.Show
。您在表示框架中得到一个“隐藏”异常,但它本质上是由开发人员引起的。@DavidBentley,在本例中不是。如果查看堆栈跟踪,您会注意到整个序列在.NET系统事件线程上运行,并由操作系统事件触发。
WindowsFormsSynchronizationContext
也由WinForms管理,不依赖于开发人员的代码。啊,是的。我猜它一定是在WPF中使用Winforms控件。您正在使用什么控件?我只在WPF中使用过WinForms中的系统托盘控件,从未见过此错误。