Я столкнулся со странной проблемой. Когда элемент из меню «Пуск» Windows перетаскивается поверх приложения, происходит сбой.
Однако, если я перетаскиваю файл из проводника через него, он обрабатывается правильно (перетаскиваемый элемент отображает красный кружок с линией, проходящей через него, когда он находится над моим приложением).
И вот здесь происходит странная вещь. Теперь, когда я попытался перетащить файл из проводника через него, программа не вылетает, когда я пытаюсь перетащить элемент из меню «Пуск». Он вылетает только в том случае, если первый перетаскиваемый элемент после запуска приложения находится из меню «Пуск».
Окно и все элементы управления имеют AllowDrop="False"
. Я пробовал добавлять обработчики событий для DragOver
и DragEnter
на самом внешнем элементе управления, но точки останова никогда не срабатывают.
Это исключение, которое я получаю:
Помощник по управляемой отладке «FatalExecutionEngineError»: «Среда выполнения обнаружила фатальную ошибку. Адрес ошибки был 0xc789d078 в потоке 0x59f4. Код ошибки - 0x80131623. Эта ошибка может быть ошибкой в CLR или в небезопасных или неподдающихся проверке частях пользовательского кода. Общие источники этой ошибки включают ошибки маршалинга пользователей для COM-взаимодействия или PInvoke, которые могут повредить стек. '
За этим следует исключение:
System.ExecutionEngineException: «Возникло исключение типа« System.ExecutionEngineException ».
И приложение закрывается.
Я использую Windows 10 и 64bit. .NET Framework 4.7.2
Стек вызовов:
[External Code] DataExchange.dll!CWinRtTarget::DragOver(struct IDragDropArgsPriv *,struct IDragUIOverridePriv * *) Unknown rpcrt4.dll!Invoke() Unknown rpcrt4.dll!Ndr64StubWorker() Unknown rpcrt4.dll!NdrStubCall3() Unknown combase.dll!CStdStubBuffer_Invoke(IRpcStubBuffer * This, tagRPCOLEMESSAGE * prpcmsg, IRpcChannelBuffer * pRpcChannelBuffer) Line 1524 C++ rpcrt4.dll!CStdStubBuffer_Invoke() Unknown [Inline Frame] combase.dll!InvokeStubWithExceptionPolicyAndTracing::__l6::<lambda_76d9e92c799d246a4afbe64a2bf5673d>::operator()() Line 1907 C++ combase.dll!ObjectMethodExceptionHandlingAction<<lambda_76d9e92c799d246a4afbe64a2bf5673d> >(InvokeStubWithExceptionPolicyAndTracing::__l6::<lambda_76d9e92c799d246a4afbe64a2bf5673d> action, ObjectMethodExceptionHandlingInfo * pExceptionHandlingInfo, ExceptionHandlingResult * pExceptionHandlingResult, void *) Line 91 C++ [Inline Frame] combase.dll!InvokeStubWithExceptionPolicyAndTracing(IRpcStubBuffer * pMsg, tagRPCOLEMESSAGE *) Line 1905 C++ combase.dll!DefaultStubInvoke(bool bIsAsyncBeginMethod, IServerCall * pServerCall, IRpcChannelBuffer * pChannel, IRpcStubBuffer * pStub, unsigned long * pdwFault) Line 1974 C++ [Inline Frame] combase.dll!SyncStubCall::Invoke(IServerCall *) Line 2031 C++ [Inline Frame] combase.dll!SyncServerCall::StubInvoke(IRpcChannelBuffer *) Line 807 C++ [Inline Frame] combase.dll!StubInvoke(tagRPCOLEMESSAGE * pMsg, CStdIdentity * pStdID, IRpcStubBuffer *) Line 2257 C++ combase.dll!ServerCall::ContextInvoke(tagRPCOLEMESSAGE * pMessage, IRpcStubBuffer * pStub, CServerChannel * pChannel, tagIPIDEntry * pIPIDEntry, unsigned long * pdwFault) Line 1542 C++ [Inline Frame] combase.dll!CServerChannel::ContextInvoke(tagRPCOLEMESSAGE *) Line 1438 C++ [Inline Frame] combase.dll!DefaultInvokeInApartment(tagRPCOLEMESSAGE *) Line 3549 C++ [Inline Frame] combase.dll!ClassicSTAInvokeInApartment(ServerCall *) Line 3313 C++ combase.dll!AppInvoke(ServerCall * pServerCall, CServerChannel * pChannel, IRpcStubBuffer * pStub, void * pv, void * pStubBuffer, tagIPIDEntry * pIPIDEntry, WireLocalThis * pLocalb) Line 1688 C++ combase.dll!ComInvokeWithLockAndIPID(ServerCall * pServerCall, tagIPIDEntry * pIPIDEntry, bool * pbCallerResponsibleForRequestMessageCleanup) Line 2804 C++ [Inline Frame] combase.dll!ComInvoke(ServerCall *) Line 2326 C++ combase.dll!ThreadDispatch(ServerCall * pServerCall) Line 422 C++ combase.dll!ThreadWndProc(HWND__ * window, unsigned int message, unsigned __int64 wparam, __int64 params) Line 798 C++ user32.dll!UserCallWinProcCheckWow() Unknown user32.dll!DispatchMessageWorker() Unknown WindowsBase.ni.dll!00007ffbc7f8f138() Unknown