@Madfisht3

Есть ли реализация какого нибудь управляемого асинхронного потока?

Нужно выполнять поток асинхронно, в этом потоке должна быть задержка по времени, которую нужно изменить. Поток должен: запускаться; останавливаться; приостанавливаться с возможностью продолжения.
  • Вопрос задан
  • 194 просмотра
Решения вопроса 1
petermzg
@petermzg
Самый лучший программист
Так запустите поток и выполняйте в нем цикличную операцию.
1. Если надо завершить проверяйте переменную
while (isActiveThread)
{
 // действие
}

2. Захотели остановить, введите Event ( к примеру ManualResetEvent ).
event.WaitOne(); // Будет ждать пока вы его не взведете в сигнальное состояние

или со временем
event.WaitOne(1000); // Ждем сигнального или 1 сек.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@DarkByte2015
Если используете TPL то например так можно.
async Task Foo() {}

async Task Foo2()
{
	var task = Foo();
	
	if (await Task.WhenAny(task, Task.Delay(1000)) == task)
	{
		// задача успела выполниться за таймаут
	}
	else
	{
		// задача не успела выполниться за таймаут
	}
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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