SystemEvents.PowerModeChanged is not raised on suspend/resume on Surface Pro
- Ngôn ngữ chính
- C#
- Star
- 18.3k
- Fork
- 5.6k
- Chỉ số merge pull request
- Chỉ số pull request đang chờ
Mô tả
### Description
When Surface Pro sleeps, the [SystemEvents.PowerModeChanged](https://learn.microsoft.com/en-us/dotnet/api/microsoft.win32.systemevents.powermodechanged) event is not raised
### Reproduction Steps
`SystemEvents.PowerModeChanged += (s, e) => Debug.WriteLine(e.Mode);`
### Expected behavior
Should print `Suspend` on Sleep
### Actual behavior
Prints 'Suspend' on Desktop
No output on Surface Pro
### Regression?
_No response_
### Known Workarounds
Use `PowerRegisterSuspendResumeNotification`
### Configuration
dotnet SDK 10.0.102
Windows 11 (10.0.26200)
x64
### Other information
WM_POWERBROADCAST doesn't work for laptops
https://learn.microsoft.com/en-us/windows/win32/power/wm-powerbroadcast
PowerRegisterSuspendResumeNotification is available on Windows 8+ which works as expected:
https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-registersuspendresumenotification
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu bằng cách lần theo việc triển khai SystemEvents.PowerModeChanged và cách nó xử lý WM_POWERBROADCAST. So sánh luồng đó với PowerRegisterSuspendResumeNotification, sau đó chạy bản tái hiện được cung cấp trên một Surface Pro. Hoàn thành khi sự kiện báo cáo Suspend trong lúc ngủ và tiếp tục hoạt động trở lại mà không làm suy giảm hành vi trên máy tính để bàn.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- csharp
- Lĩnh vực
- desktop, operating-systems
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 38/100