仅当断点放在方法c#中时,代码才有效

时间:2017-01-03 06:18:59

标签: c# .net mouseevent

我有一个鼠标左键事件。只有在此方法中放置断点时,我的应用程序才按预期工作。如果我删除断点并运行代码,则功能无效。

为什么会发生这种情况有什么特别的原因吗? PFB事件代码

internal void LeftMouseDown(object sender, MouseEventArgs e)
{
    try
    {
        recorderData.CloseRecordedActionWindows();

        if (CommonRecorderHelper.IsCursorInsideRecorder())
            return;

                      recorderData.m_lastPremitiveAction = PrimitiveMouseEvent.LeftButtonDown.ToString();
        recorderData.m_lastMouseDownLocation = e.Location;
        recorderData.m_IsAssertionStarted = false;
        recorderData.m_readyForHookDisconnect = false;
        recorderData.m_previousKeyboardSUITControl = null;

        recorderData.m_RecordedValue.ResetValues(!recorderData.m_RecordedValue.IsModifierKeyPressed());

        if (recorderData.m_RecordedValue.IsModifierKeyPressed())
            recorderData.m_IsModifierKeyPressedForMouseAction = true;

        UpdateRecorderFormWithActions(recorderData.m_lastMouseDownLocation, PrimitiveMouseEvent.LeftButtonDown);

    }
    catch (Exception ex)
    {
        recorderData.m_RecordingStopped = true;
        recorderData.m_mouseDownOnValidationBtn = false;
        SUITLogger.ReportMessage(ex);
    }
    finally
    {
                recorderData.m_EarlierX = e.X;
        recorderData.m_EarlierY = e.Y;
    }
}

2 个答案:

答案 0 :(得分:1)

通过在if (CommonRecorderHelper.IsCursorInsideRecorder())上放置一个断点,调试器将在它到达该行时停止,光标将移动到代码窗口 - 从而离开录制器窗口。

所以我觉得你的问题没有措辞。实际上,您的代码始终有效。只有IsCursorInsideRecorder函数通常会返回true,而您希望它返回false

答案 1 :(得分:0)

这种情况正在发生,因为正在花费更多时间让其他线程完成。当我让线程进入睡眠状态时,它正在按预期工作而没有任何断点。

如果我们放置断点,我们在另一个线程完成之前给代码留出时间..