我正在构建一个使用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..");
答案 0 :(得分:1)
看起来你正在阻止主线程。这可以防止事件处理程序执行,因此永远不会调用您的Set方法。