我们有一个较旧的WPF应用程序,它使用" Windows API代码包"为了显示一个任务对话框(在Vista中引入但在Windows 8中一直工作的东西)。
我现在正试图在Windows 10上运行该项目,当我尝试显示任务对话框时,我得到以下异常:
System.AccessViolationException :尝试读取或写入受保护的内存。这通常表明其他记忆已损坏 在Microsoft.WindowsAPICodePack.Dialogs.TaskDialogNativeMethods.TaskDialogIndirect(TaskDialogConfiguration taskConfig,Int32& button,Int32& radioButton,Boolean& verificationFlagChecked)
在Microsoft.WindowsAPICodePack.Dialogs.NativeTaskDialog.NativeShow()
在Microsoft.WindowsAPICodePack.Dialogs.TaskDialog.ShowCore()
这些API在Windows 10中是否不再可用?
在没有编写自定义对话框的情况下,是否有Windows 10中提供的类似功能的替换?
编辑:我让它运行(纯粹是运气,我猜?我没有改变任何代码),对话框弹出如下:
应该有3个按钮,绝对没有中文字符,所以我同意这里肯定存在一些内存问题。有什么想法吗?
答案 0 :(得分:1)
Windows 10仍支持“任务对话框”,但问题可能出在您似乎正在使用的库中:https://github.com/aybe/Windows-API-Code-Pack-1.1/issues/3
如问题描述中所述,它可能会在 64位 Windows上导致AccessViolationException
(可能还有不正确的字符)。您可以通过应用引用的拉取请求中的更改来修复它。
注意:由于WinForms是开源的,因此在将来的.NET Core版本中要求包含正式的“任务对话框”实现:https://github.com/dotnet/winforms/issues/146