.net 当“开始”菜单中的项被拖动到WPF应用程序上时,WPF应用程序崩溃
我遇到了一个奇怪的问题。当Windows“开始”菜单中的某个项目拖动到应用程序上时,它会崩溃 但是,如果我将文件从资源管理器拖动到它上面,它会得到正确的处理(当它在我的应用程序上时,被拖动的项目会显示一个红色圆圈,带有一条穿过它的线) 这就是奇怪的事情发生的地方。现在,我已经尝试将文件从资源管理器拖动到它上面,当我尝试从“开始”菜单拖动项目时,程序不会崩溃。只有当应用程序启动后的第一个拖动项来自“开始”菜单时,它才会崩溃 窗口和其中的所有控件都具有.net 当“开始”菜单中的项被拖动到WPF应用程序上时,WPF应用程序崩溃,.net,wpf,drag-and-drop,crash,executionengineexception,.net,Wpf,Drag And Drop,Crash,Executionengineexception,我遇到了一个奇怪的问题。当Windows“开始”菜单中的某个项目拖动到应用程序上时,它会崩溃 但是,如果我将文件从资源管理器拖动到它上面,它会得到正确的处理(当它在我的应用程序上时,被拖动的项目会显示一个红色圆圈,带有一条穿过它的线) 这就是奇怪的事情发生的地方。现在,我已经尝试将文件从资源管理器拖动到它上面,当我尝试从“开始”菜单拖动项目时,程序不会崩溃。只有当应用程序启动后的第一个拖动项来自“开始”菜单时,它才会崩溃 窗口和其中的所有控件都具有AllowDrop=“False”。我尝试在最外
AllowDrop=“False”
。我尝试在最外层的控件上为DragOver
和DragEnter
添加事件处理程序,但从未命中断点
这是我得到的例外:
托管调试助手“FatalExecutionEngineError”:“运行时遇到致命错误。错误地址位于线程0x59f4上的0xc789d078。错误代码为0x8013623。此错误可能是CLR或用户代码的不安全或不可验证部分中的错误。此错误的常见来源包括COM互操作或PInvoke的用户封送错误,这可能会损坏堆栈。”
然后是这个例外:
System.ExecutionEngineeException:'引发了类型为'System.ExecutionEngineeException'的异常。'
然后应用程序退出
我正在使用Windows 10和64位。NET框架4.7.2
调用堆栈:
[外部代码]
DataExchange.dll!CWinRtTarget::DragOver(结构IDragDropArgsPriv*,结构idragioveridepriv**)未知
rpcrt4.dll!Invoke()未知
rpcrt4.dll!Ndr64StubWorker()未知
rpcrt4.dll!NdrStubCall3()未知
combase.dll!C++(IRpcStubBuffer * *,TAGPCLeMeEthys*PRPCMSG,IrPChanNealBase*PRPChannRelax)1524行C++
rpcrt4.dll!CSTDSubbuffer_Invoke()未知
[Inline Frame]combase.dll!ExvutestBuffExabyRealand Trace::(1907)C++()第二行
combase.dll!ObjeMeOraceExpPosiLink动作(vIONEXTUBUDExpRealPrand and Trace::AbjultMeOxExpExtAdvutoFixFielnFixPpExutsHutualIngIn,ExpUTHORITCHORIGRESUTP.PATABORATION HANDLIN结果,VATUL*)91行C++
[Inline Frame]combase.dll!EnvestStaseBuffError和跟踪(IrPCBuffSuff*PMSG,TAGPrCyMeMeSea*)1905行C++
combase.dll!Debug TasBuffKE(BoOBISAISYNCGROUND方法,ISEVALWALL*PSEVALLATE,IPCPChanelPuffy*PhanChanp,IrPCBuffSuff*Ptub,未签名long *PDWFACT)1974 C++
[Inline Frame]combase.dll!SycStubLoe::调用(ISErrCalk*)2031行C++
[Inline Frame]combase.dll!SycServer调用::StubInvoke(IRpcChannelBuffer *)807行C++
[Inline Frame]combase.dll!StubVoCKE(TrgPrCyMeMeSt*PMSG,CSSTDeIdEng*PSSTDID,IRpcStubBuffer *)2257 C++
combase.dll!Server Calp::ContextInvoke(TrgPrCyMeSeaS*PMESTATE,IrPCBuffSuff*Ptub,CServReals*PhanChanp,TaGIPIdItI*PIPIDIORT,未签名的long *PDWORKECT)1542 C++
[Inline Frame]combase.dll!CServerChannel:ContextInvoke(TrigpCeleMeSea*)第1438行C++
[Inline Frame]combase.dll!Debug ToCKEnBooLoad(TAGPrCyMeMeSea*)3549行C++
[Inline Frame]combase.dll!Casic StaskPosikBooLoad(Server Calp*)3313线C++
combase.dll!AppVoCKE(ServLeals*PServLeCar,CServChans*PhanChanp,IrPCBuffSuff*Ptub,Vault*PV,Vult*pStudioBuffic,TaqIPIDItxPipIdIt目,WiRealOrth.*PoCalb)1688 C++
combase.dll!CopVoCKEnLoopANDIDID(ServCalp*PServLead,TaqIPIDItxPIPIdIt目,BoOL PBCALReRealFieldRevestMasgEngEnLeChanUp)2804 C++
[Inline Frame]combase.dll!COMJULKE(Server Calk)2326行C++
combase.dll!线程调度(ServCalp*PServLeCar)422行C++
combase.dll!THEWWLDNPROC(HWND** *窗口,未签名int消息,未签名的IN 64,WPARAM,γIN 64 PARAMS)798行C++
user32.dll!UserCallWinProcCheckWow()未知
user32.dll!DispatchMessageWorker()未知
WindowsBase.ni.dll!00007ffbc7f8f138()未知
我的电脑上也会出现同样的症状,WPF创建的任何应用程序都会出现同样的症状。重新打开“开始”菜单进行修复。尝试进入“选项->调试->输出窗口->WPF跟踪设置”。选择要完全记录的所有属性。可能在崩溃之前您会看到一些错误消息。您是否尝试以管理员身份运行应用程序?@Rekshino我现在尝试以管理员身份运行,但崩溃没有发生。我想这可能有助于缩小问题的范围。编辑:再想一想,可能不会,因为您不能将项目拖到以管理模式运行的应用程序上。但我想这与在我的应用程序中使用“AllowDrop=False”不同。
[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