0

を使用するメソッドを構築していますが、メソッドを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..");
4

1 に答える 1

1

メインスレッドをブロックしているようです。これにより、イベント ハンドラーが実行されなくなり、Set メソッドが呼び出されなくなります。

于 2013-02-17T15:32:16.500 に答える