InvalidOperationException: операция Undo обнаружила контекст, отличный от того, который был применен в соответствующей операции Set - PullRequest
5 голосов
/ 14 мая 2010

Я получил следующее исключение:

Exception Type: System.InvalidOperationException  
Exception Message: The Undo operation encountered a context that is different from what was applied in the corresponding Set operation. The possible cause is that a context was Set on the thread and not reverted(undone).  
Exception Stack:   at System.Threading.SynchronizationContextSwitcher.Undo()  
at System.Threading.ExecutionContextSwitcher.Undo()  
at System.Threading.ExecutionContext.runFinallyCode(Object userData, Boolean exceptionThrown)  
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteBackoutCodeHelper(Object backoutCode, Object userData, Boolean exceptionThrown)  
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)  
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)  
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)  
at System.Net.ContextAwareResult.Complete(IntPtr userToken)  
at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken)  
at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)  
at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)  
Exception Source: mscorlib  
Exception TargetSite.Name: Undo  
Exception HelpLink:  

Приложение представляет собой консольное приложение Visual Studio 2005 (.Net 2.0). Это сервер для нескольких соединений TCP / IP, выполняющий асинхронное чтение сокетов и синхронные записи сокетов.

В поисках ответа я наткнулся на это сообщение , в котором говорится о звонке на Application.Doevents(), который я не использую в своем коде.

Я также нашел это сообщение , в котором есть разрешение, связанное с Component, которое я также не использую в своем коде. Приложение ссылается на созданную мной библиотеку, которая содержит пользовательские элементы управления и компоненты, но они не используются приложением.

Вопрос: Что вызвало это и как я могу предотвратить это снова? Или более реалистичный вопрос: что на самом деле означает это исключение? Как определяется «контекст» в этой ситуации?

Все, что может помочь мне понять, что происходит, будет очень цениться.

1 Ответ

0 голосов
/ 05 июня 2010

context называется «Thread Thread» и никак не связан с вашим кодом. Однако это внутренняя проблема с .net, которая может быть ограничена только бета-версиями

...