【问题标题】:WPF application black after locking windows and resume to desktop锁定窗口并恢复到桌面后 WPF 应用程序黑屏
【发布时间】:2015-06-26 07:25:52
【问题描述】:

我们的 .net 4.0 wpf 应用程序有一个小问题。如果用户锁定他的屏幕(windows)并在几秒钟后解锁屏幕(继续工作),应用程序如下所示:

用户不能点击任何控件或做某事。奇怪的是, 仅当用户位于特殊选项卡上时才会出现,我们使用BeginInvoke 并大量使用线程。除了BeginInvoke 会造成这些问题之外,我找不到任何关于此错误的信息。

我在 windows 日志中也找不到任何东西。

编辑

我使用多显示器,如果我的应用程序是黑色的,则移除显示器电缆并重新连接它,应用程序继续工作。

【问题讨论】:

  • 在 VS 中调试这个问题。按暂停几次,看看你挂在什么线程上。
  • @BendEg 如果这是一个非托管应用程序(我在托管环境中从未见过这样的事情),我有根据的猜测是有人覆盖了表单的 Paint/OnPaint 处理程序。您可以移动/调整空白表格的大小吗?可以最小化还是最大化?
  • @mg30rg 是的,我可以移动表单,但在表单上没有可点击的内容。没有人覆盖某些 Paint-Methods。重新连接我的显示器后,它继续工作,所以问题一定出在另一个问题上,我想......谢谢
  • @BendEg 当您断开并重新连接(其中一个)显示器时,桌面会收到一条 WM_REFRESH 消息,并在其所有子项(包括您的表单)上指示 WM_REFRESH。这就是为什么我假设其中一个 Paint 事件被覆盖。您是否有任何工具可以将 WM_PAINT 发送到您的表单?可以试试吗?

标签: c# .net wpf windows multithreading


【解决方案1】:

这个问题似乎只在使用 wpf DataGrid 时出现。从 thsi 网格切换到 Telerik-Grid 可以解决问题,但我无法弄清楚是哪个部分导致了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    相关资源
    最近更新 更多