私はかなり長い間周りを見回してきましたが、解決策はありません..
私が達成したいのは、1 つのスレッドを一時停止するために EventWaitHandle クラスを使用することです。
そこで、フォームに 2 つのボタンを作成します。最初のボタンはメッセージを送信してから一時停止し、2 番目のボタンは最初のボタンのスレッドの一時停止を解除し、別のメッセージを送信します。そのように:
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()
、2 番目のボタンを押すことや、少なくともフォームを閉じることなど、フォーム全体で何もできなくなります。
私は何を間違えましたか?私が見つけた例と私のコードの間に違いが見つからないように見えるからです。