小编use*_*868的帖子

WndProc覆盖不一致地捕获消息C#

所以我遇到了一个非常奇怪的bug /计时问题,所以我简化了下面的代码来准确显示正在发生的事情.它在调试步进过程中非常有效,但是在没有断点的情况下运行奇怪的东西.

在我的MainForm中,我正在捕捉任务栏点击

    const int WM_ACTIVATEAPP = 0x1C; 
    int count = 0;
    protected override void WndProc(ref Message m)
    {
     if (m.Msg == WM_ACTIVATEAPP)
        {
         if (m.LParam.ToInt32() == 2504)
            {
               using (StreamWriter writer = new StreamWriter("C:\\log.txt", true))
                {
                    count++;
                    writer.WriteLine(count);
                }
            }
        }
     }
Run Code Online (Sandbox Code Playgroud)

m.LParam.ToInt32()== 2504表示在任务栏中单击了该程序.

如果我在"使用(StreamWriter ...",断开运行调试并单击10次(每次在编译器中必须为f5)之后设置断点,我将在日志中出现1-10.

如果我取下断点并且每隔几秒钟单击一次,总共10次(与上面相同),我最终得到的是1-2,1-4,但现在再也没有了.

没有断点和10次快速双击,每次都会记录1-20.

c# wndproc

0
推荐指数
1
解决办法
456
查看次数

标签 统计

c# ×1

wndproc ×1