浏览代码

Fix timer thread safety related crash

Equbuxu 1 年之前
父节点
当前提交
0ff7fe0993
共有 1 个文件被更改,包括 4 次插入3 次删除
  1. 4 3
      src/PixiEditor/Models/Controllers/MouseUpdateController.cs

+ 4 - 3
src/PixiEditor/Models/Controllers/MouseUpdateController.cs

@@ -21,7 +21,6 @@ public class MouseUpdateController : IDisposable
         element = uiElement;
         element = uiElement;
         
         
         _timer = new System.Timers.Timer(MouseUpdateIntervalMs);
         _timer = new System.Timers.Timer(MouseUpdateIntervalMs);
-        _timer.AutoReset = true;
         _timer.Elapsed += TimerOnElapsed;
         _timer.Elapsed += TimerOnElapsed;
         
         
         element.MouseMove += OnMouseMove;
         element.MouseMove += OnMouseMove;
@@ -29,8 +28,10 @@ public class MouseUpdateController : IDisposable
 
 
     private void TimerOnElapsed(object sender, ElapsedEventArgs e)
     private void TimerOnElapsed(object sender, ElapsedEventArgs e)
     {
     {
-        _timer.Stop();
-        element.MouseMove += OnMouseMove;
+        Application.Current?.Dispatcher.Invoke(() =>
+        {
+            element.MouseMove += OnMouseMove;
+        });
     }
     }
 
 
     private void OnMouseMove(object sender, MouseEventArgs e)
     private void OnMouseMove(object sender, MouseEventArgs e)