[英]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.