c#如何实现一个线程暂停,等待用户输入文本后继续运行?

时间:2021-10-15 08:05:10
情问如何等待一个用户输入文本 然后输入超过4位后继续根据用户输入的数值继续运行程序?
Suspend 过时了 我不知道还有其他方法实现??

13 个解决方案

#1


可以用事件通知:


using System;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Thread th = new Thread(YourThread);
            th.Start();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (textBox1.Text.Length >= 4)
            {
                detailCollectedEvent.Set();                      // 当textBox1的文本超过4位,发一个通知
            }
        }

        AutoResetEvent detailCollectedEvent = new AutoResetEvent(false);
        void YourThread()
        {
            MessageBox.Show("input you bank account details into the textbox");
            detailCollectedEvent.WaitOne();                      // 等候通知
            MessageBox.Show("we will keep the secret.");
        }
    }
}

#2


事件通知是最佳方案,以前我都用一个while(xxx)来等待,后来发现会有一些问题.

#3


这个方案真的不错呀!

#4


1楼即正解,我们都等着接分呢。

#5


学习一下

#6


学习一下

#7


1楼方法不错...学习..

#8


结帖率25%。。。。= =、

#9


看到标题本想来回复,打开后发现gomoku回复是很标准了。支持。

#10


学习了这个办法真不错。

#11


不错,搜到了很多解释,不过楼主代码简单明了清晰。谢了!

#12


学习了,,mark

#13


学习一下。

#1


可以用事件通知:


using System;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Thread th = new Thread(YourThread);
            th.Start();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (textBox1.Text.Length >= 4)
            {
                detailCollectedEvent.Set();                      // 当textBox1的文本超过4位,发一个通知
            }
        }

        AutoResetEvent detailCollectedEvent = new AutoResetEvent(false);
        void YourThread()
        {
            MessageBox.Show("input you bank account details into the textbox");
            detailCollectedEvent.WaitOne();                      // 等候通知
            MessageBox.Show("we will keep the secret.");
        }
    }
}

#2


事件通知是最佳方案,以前我都用一个while(xxx)来等待,后来发现会有一些问题.

#3


这个方案真的不错呀!

#4


1楼即正解,我们都等着接分呢。

#5


学习一下

#6


学习一下

#7


1楼方法不错...学习..

#8


结帖率25%。。。。= =、

#9


看到标题本想来回复,打开后发现gomoku回复是很标准了。支持。

#10


学习了这个办法真不错。

#11


不错,搜到了很多解释,不过楼主代码简单明了清晰。谢了!

#12


学习了,,mark

#13


学习一下。