gpt4 book ai didi

c# - Form.FormBorderStyle native 异常访问冲突

转载 作者:太空宇宙 更新时间:2023-11-03 14:25:58 27 4
gpt4 key购买 nike

在 WindowsCE 平台(自定义构建)上,我们的 C# gui 使用常规形式来显示“弹出菜单”。我们将 FormBorderstyle 设置为 None 因为我们不希望表单控件可见。

一些客户在一段时间后报告“灰盒”。在此处进行一些测试后,我们可以非常快速地重现该问题。当我们不断打开 2 个不同的菜单(表单)时,平台会向我们显示 native 异常。

Error
A native exception has occurred in Tiger.CEHost.exe. Select Quit and then restart this program, or select Details for more information.

详情:

Error
ExceptionCode: 0xC0000005
ExceptionAdress: 0x00000001
Reading: 0x00000001

at WL.SetSTyle(IntPtr hwnThis, UInt32 dwMask, UInt32 dwStyle)
at Form._SetBorderStyle(AGL_WINDOWSTYLE wstyVal, AGL_WINDOWSTYLE wstyMask)
at Form.set_FormBorderStyle(FormBorderStyle value)
at pDropDown.PopupForm.Show()
at pDropDown.Show()
at pButton.ShowHideDropDown()
at pButton.OnClick(EventArgs e)
at Control.WnProc(WM wm, Int32 wParam, Int32 lParam)
at Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam)
at EVL.EnterMainLoop(IntPtr hwnMain)
at Application.Run(Form fm)
at Program.Main(String[] args)

它似乎总是在 FormBorderStyle 属性上失败。我们已经尝试删除所有 pInvoke,因为可能某些内存已被覆盖,但这没有帮助。

我们还记录了对 Show 方法的每次调用,每次调用都是在 gui 线程中进行的,并且 Form 包含一个有效的句柄。

最佳答案

我从未见过这种情况,这让我倾向于认为它不太可能成为 CF 甚至您的应用程序中的问题。

您的设备是否有足够的内存来运行该应用程序?内存不足的情况应该会引发 OOM,但我已经看到它会做其他不太可预测的事情,所以它始终是首先要检查的事情。

如果内存不是问题,您确定这不是平台问题吗?请记住,由于操作系统的很大一部分是由 OEM 开发的,因此您不能排除操作系统存在问题的可能性。

我会尝试两件事:

  1. 同一个应用程序是否可以在其他一些硬件(甚至是模拟器)上正常运行而没有问题?如果它可以在其他硬件上运行,则严重暗示该平台是问题所在。

  2. 由于使用 C# 中的小型应用程序进行重现相当容易,因此我建议使用 C/C++ 构建一个执行相同功能项目的应用程序,以查看它是否运行或出现相同的问题。

关于c# - Form.FormBorderStyle native 异常访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4013890/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com