我已经环顾了很长时间了,但没有任何解决方案..
我想要实现的是使用 EventWaitHandle 类来暂停一个线程。
所以,我在一个表单上创建了两个按钮。第一个应该发送一条消息,然后暂停,第二个应该取消暂停第一个按钮的线程,然后发送另一条消息。像那样:
using System;
using System.Windows.Forms;
using System.Threading;
namespace Application
{
public partial class Form1 : Form
{
EventWaitHandle wh = new AutoResetEvent(false);
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Thread blocked!");
wh.WaitOne();
MessageBox.Show("Thread unblocked!");
}
private void button2_Click(object sender, EventArgs e)
{
wh.Set();
}
}
}
但是一旦线程被阻塞wh.WaitOne()
,我就不能在整个表单上做任何事情,包括按下第二个按钮或至少关闭它..
我做错了什么?因为我似乎找不到我能找到的示例和我的代码之间的任何区别。