Подтвердить что ты не робот

С# Threading - Как запустить и остановить поток

Может ли кто-нибудь дать мне головной убор на тему резьбы? Я думаю, что знаю, как сделать несколько вещей, но мне нужно знать, как сделать следующее:

Настройте основной поток, который останется активным до тех пор, пока я не остановлю его (если вы задаетесь вопросом, он прекратится, когда будут получены данные). Затем я хочу запустить второй поток, который будет захватывать данные из текстового поля и должен выйти, когда я сигнализирую об этом, что происходит, когда пользователь нажимает клавишу ввода.

Ура!

4b9b3361

Ответ 1

Вот как я это делаю...

public class ThreadA {
    public ThreadA(object[] args) {
        ...
    }
    public void Run() {
        while (true) {
            Thread.sleep(1000); // wait 1 second for something to happen.
            doStuff();
            if(conditionToExitReceived) // what im waiting for...
                break;
        }
        //perform cleanup if there is any...
    }
}

Затем запустить это в своем потоке... (я делаю это так, потому что я также хочу отправить args в поток)

private void FireThread(){
    Thread thread = new Thread(new ThreadStart(this.startThread));
    thread.start();
}
private void (startThread){
    new ThreadA(args).Run();
}

Поток создается путем вызова "FireThread()"

Созданный поток будет выполняться до тех пор, пока не будет выполнено его условие остановки, затем оно будет умирать...

Вы можете сигнализировать "main" с делегатами, чтобы рассказать об этом, когда поток умер. Поэтому вы можете запустить второй...

Лучше всего прочитать: Эта статья MSDN

Ответ 2

Thread th = new Thread(function1);
th.Start();
th.Abort();

void function1(){
//code here
}

Ответ 3

Используйте статический AutoResetEvent в ваших порожденных потоках, чтобы перезвонить в основной поток, используя метод Set(). У этого парня есть довольно хорошая демонстрация в SO о том, как его использовать.

Прояснение AutoResetEvent