簡體   English   中英

擊中斷點時鼠標凍結/滯后

[英]Mouse freezing/lagging when hit breakpoint

目標:能夠在不執行單擊本身的情況下在 Windows 桌面應用程序上找到被單擊的元素的點(X,Y)。

不工作的解決方案我已經添加mousekeyhook NuGet包到我的.NET的核心WPF應用程序,它工作正常(當點擊活動募集符合正確的位置),但每次該程序命中斷點(對於特定示例如下-在M_Events_MouseDown法)鼠標開始滯后約 20 秒。

我還發現在 WinForms 應用程序中它運行順利

鼠標鍵鈎實現:

    public partial class MainWindow : Window
    {
        private IKeyboardMouseEvents m_Events;
        public MainWindow()
        {
            InitializeComponent();
            SubscribeGlobal();
        }

        private void SubscribeGlobal()
        {
            Unsubscribe();
            Subscribe(Hook.GlobalEvents());
        }

        private void Subscribe(IKeyboardMouseEvents events)
        {
            m_Events = events;
            m_Events.MouseDown += M_Events_MouseDown; 
        }

        private void M_Events_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            Console.WriteLine($"Mouse down :{e}");
        }

        private void Unsubscribe()
        {
            if (m_Events == null)
                return;

            m_Events.MouseDown -= M_Events_MouseDown;
        }
    }

這是一個已知問題和設計的低級掛鈎行為。

當您連接到鼠標事件處理鏈時,您的代碼就是許多其他處理器之一。 每一段被鈎住的代碼都有可能抑制或修改進一步的處理。 然而,這樣做是有時間限制的。 如果您設置斷點,Windows 會調用您的代碼,您的代碼不會響應,會發生超時並重新開始。

有關詳細信息,請參閱類似的問題。 獲得更多贊成票的第二個答案更好。: 低級鼠標鈎子 - 鼠標在斷點處凍結

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM