فهرست منبع

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;
         
         _timer = new System.Timers.Timer(MouseUpdateIntervalMs);
-        _timer.AutoReset = true;
         _timer.Elapsed += TimerOnElapsed;
         
         element.MouseMove += OnMouseMove;
@@ -29,8 +28,10 @@ public class MouseUpdateController : IDisposable
 
     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)