新しいスレッドを使用して Windows フォームをロードすると、毎秒リストボックスに乱数が追加され、10 個の数字に達すると、10 個の乱数の新しいセットが生成されます。ただし、現時点では、UI スレッドに問題があります。乱数がリストボックスに追加されていますが、フォームを制御できません。フォームを操作しようとすると、UI がフリーズします。MethodInvoker を間違って使用していますか? アドバイスをいただければ幸いです。
public Form1()
{
InitializeComponent();
Thread ranThread = new Thread(new ThreadStart(RandomList));
ranThread.IsBackground = true;
ranThread.Start();
}
public void RandomList()
{
stack = new Stack<int>();
while (loop)
{
if (lbxStackRndNum.InvokeRequired)
{
lbxStackRndNum.Invoke(new MethodInvoker(delegate
{
Random rnd = new Random();
if (lbxStackRndNum.Items.Count == 10)
{
stack.Clear();
lbxStackRndNum.Items.Clear();
}
int rndVal = rnd.Next(1, 10000);
stack.Push(rndVal);
lbxStackRndNum.Items.Insert(0, rndVal);
Thread.Sleep(1000);
}));
}
}
}