dotnet / dotnet/runtime

SystemEvents.PowerModeChanged is not raised on suspend/resume on Surface Pro

Đang mở
#123,773 3 bình luận 0 reaction 0 người được giao Xem trên GitHub
area-Microsoft.Win32 bug help wanted
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

Mở 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

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.