![]() |
1
7
我无法获取getPreviewHandlerGuid()来识别.txt文件,因此必须直接插入guid。当您使用Project+属性、调试、勾选启用非托管代码调试时,您可以看到发生了什么错误。 现在,调试器将在出现问题时停止并显示
调用堆栈的顶部如下所示:
问题位于streamIncallback()函数中。它由用于显示预览(msftedit.dll)以加载文件的richtextbox调用。此回调函数中的代码有一个bug,它会破坏用于检测堆栈帧是否因缓冲区溢出而损坏的“canary”。 这是微软为防止病毒因缓冲区溢出而自我注射而采取的反措施的一部分。VisualStudio中的/Gs编译选项用于C/C++语言。一旦检测到,CRT会迅速终止程序。发生这种情况时没有异常,因为堆栈已被破坏,所以无法安全地释放堆栈。因此,CLR无法捕获异常。 此错误特定于TXT文件查看器。除了不使用它,你什么都做不了。将此错误报告给connect.microsoft.com可能没有用,他们会将其作为“外部”关闭。否则,这是一个微妙的提示,当您让非托管代码在程序内部运行时会发生什么;) |
![]() |
2
2
您遇到此问题的真正原因是您正在创建预览处理程序对象 生产中的 . 正确的方法是创建它 进程外 . 披露 下面包含我的博客/代码段的广告。
见
https://github.com/GeeLaw/PreviewHost
例如。具体来说,请参见
Line 219 of PreviewHandler.cs
,你必须经过的地方
|
![]() |
3
1
我也遇到了同样的问题,我可以通过在x64中编译而不是
我正在Windows7(64位)上使用Visual Studio 2010,因此如果您使用的是32位操作系统,则此答案将不适用。 在Visual Studio 2010中
|
![]() |
4
0
它不太可能,但可能是这里的问题-catch(exception)只捕获异常类型的异常-尝试使用catch而不使用任何类型筛选。
|
![]() |
5
0
我想我已经找到解决这个问题的办法了。问题是,您正在创建的流要么被垃圾收集器清理,要么被其他东西清理。如果使用下面的代码创建的流调用initialize方法,它应该可以工作:
i_m在Windows窗体应用程序中使用上述代码,显式设置为32位(x86)并以单线程公寓模式运行。 信用卡归谢洛克之家( http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.framework.interop/2010-09/msg00003.html ) |
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |