Как приостановить/приостановить, поток затем продолжают его?

Я подаю заявку в C#, который использует winform в качестве GUI и отдельного потока, который выполняет в фоновом режиме автоматически изменяющиеся вещи. Исключая:

public void Run()
{
    while(true)
    {
        printMessageOnGui("Hey");
        Thread.Sleep(2000);
        // Do more work
    } 
}

Как я сделал бы это паузой где-нибудь в цикле, потому что одно повторение цикла занимает приблизительно 30 секунд. Таким образом, я не хотел бы приостанавливать его после его сделанного один цикл, я хочу приостановить его вовремя.

12
задан Lee Taylor 3 November 2013 в 00:09
поделиться

2 ответа

ManualResetEvent mrse = new ManualResetEvent(false);

public void run() 
{ 
    while(true) 
    { 
        mrse.WaitOne();
        printMessageOnGui("Hey"); 
        Thread.Sleep(2000); . . 
    } 
}

public void Resume()
{
    mrse.Set();
}

public void Pause()
{
    mrse.Reset();
}
22
ответ дан 2 December 2019 в 05:54
поделиться

Вы можете приостановить поток, вызвав thread.Suspend , но это устарело. Я бы посмотрел на autoresetevent для выполнения вашей синхронизации.

1
ответ дан 2 December 2019 в 05:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: