WPF中使用DoDragDrop程序会崩,"FatalExecutionEngineError"

win10系统。当我使用DoDragDrop时,程序会崩溃,崩溃的几率很大,但有时又不会,有时在操作的过程中崩溃。我试过很多代码,包括gong-wpf-dragdrop也是这样(但好像这个项目崩溃几率低一些),测试项目案例直接赋值的以下连接作者的代码。

https://blog.csdn.net/songhuangong123/article/details/126248847?ops_request_misc=&request_id=&biz_id=102&utm_term=WPF%20%E6%8B%96%E6%8B%BD&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-126248847.nonecase&spm=1018.2226.3001.4187

private void Border_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    Border border = (Border)sender;
 
    DragDrop.DoDragDrop(border, "test", DragDropEffects.Copy);
}

托管调试助手 "FatalExecutionEngineError":“运行时遇到了错误。此错误的地址为 0x64433039,在线程 0x224c 上。错误代码为 0xc0000005。此错误可能是 CLR 中的 bug,或者是用户代码的不安全部分或不可验证部分中的 bug。此 bug 的常见来源包括用户对 COM-interop 或 PInvoke 的封送处理错误,这些错误可能会损坏堆栈。”
尝试过更改目标框架为64位和32位,刚更改64位时崩溃几率变小。

WPF 线程中异常导致程序崩溃
https://www.cnblogs.com/czly/p/11858644.html
https://blog.csdn.net/qq_40430656/article/details/125004275

先 try试一下能不能捕获到具体异常

排查方向:
局部变量赋值越界
例如: 局部字符串数组拷贝字符串,当拷贝的字符串大大的超过变量空间就会破坏堆栈
指向局部变量的指针越界修改数据
例如:void test(int data) { int* p = &data; --p; *p = 100; }
死循环
死循环会导致栈溢出,从而导致宕机

应该是你的电脑环境有问题,比如你系统下面的system32下的msvcp相关dll版本对不上,你试试去别人电脑上看看这个程序有没有问题。

建议编译代码时生成pdb符号文件,再结合Crash时的dump调试信息,来定位是那行代码引起的崩溃。