Я подаю заявку в C#, который использует winform в качестве GUI и отдельного потока, который выполняет в фоновом режиме автоматически изменяющиеся вещи. Исключая:
public void Run()
{
while(true)
{
printMessageOnGui("Hey");
Thread.Sleep(2000);
// Do more work
}
}
Как я сделал бы это паузой где-нибудь в цикле, потому что одно повторение цикла занимает приблизительно 30 секунд. Таким образом, я не хотел бы приостанавливать его после его сделанного один цикл, я хочу приостановить его вовремя.
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();
}
Вы можете приостановить поток, вызвав thread.Suspend
, но это устарело. Я бы посмотрел на autoresetevent для выполнения вашей синхронизации.