Skip to content

Commit acdb632

Browse files
committed
优化自动锁定服务逻辑
1 parent dbd958c commit acdb632

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

src/ComputerLock/Platforms/UserActivityMonitor.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ public class UserActivityMonitor
1313

1414
public void SetAutoLockSecond(int autoLockSecond)
1515
{
16-
_autoLockMillisecond = autoLockSecond * 1000;
16+
lock (_lock)
17+
{
18+
_autoLockMillisecond = autoLockSecond * 1000;
19+
}
1720
}
1821

1922
public void StartMonitoring()
@@ -51,11 +54,13 @@ private void Timer_Elapsed(object? sender, ElapsedEventArgs e)
5154

5255
if (WinApi.GetLastInputInfo(ref lastInputInfo))
5356
{
54-
long elapsedMillisecond = (long)Environment.TickCount64 - lastInputInfo.dwTime;
57+
long elapsedMillisecond = Environment.TickCount64 - lastInputInfo.dwTime;
5558
if (elapsedMillisecond > _autoLockMillisecond)
5659
{
5760
OnIdle?.Invoke(this, EventArgs.Empty);
58-
StopMonitoring();
61+
62+
// 避免死锁,异步停止监控
63+
Task.Run(StopMonitoring);
5964
}
6065
}
6166
}

0 commit comments

Comments
 (0)