手动重置事件的运行方法存在问题

时间:2013-02-17 15:19:23

标签: c# manualresetevent

我正在构建一个使用ManualResetEvent的方法,但在启动WaitOne方法后我无法运行它。这是我的方法代码。代码运行代码,直到它运行到wait.WaitOne()调用。谢谢!

            var wait = new ManualResetEvent(false);
            Color tmpColor = new Color();
            MouseEventHandler tmpHandler = null;

            ThreadPool.QueueUserWorkItem(delegate
            {
                Debug.WriteLine("Adding MouseEventHandler..");
                tmpHandler = new MouseEventHandler(
                   (sender, e) =>
                   {
                       if (e.Button == MouseButtons.Left)
                       {
                           Bitmap tmpImage = new Bitmap(imgBox.Image);
                           tmpColor = tmpImage.GetPixel(e.X, e.Y);
                           Debug.WriteLine("Testing..");
                       }
                       else
                       {
                           Debug.WriteLine("Closing..");
                           this.Close();
                       }
                       wait.Set();
                   }
                );

                imgBox.MouseClick += tmpHandler;
            });


            Debug.WriteLine("Waiting..");

            wait.WaitOne();
            Debug.WriteLine("Running..");

1 个答案:

答案 0 :(得分:1)

看起来你正在阻止主线程。这可以防止事件处理程序执行,因此永远不会调用您的Set方法。