задача такая: запускается поток в консоли он ждет ввода данных от пользователя. Как пользователь вводит данные поток закрывается. Одновременно второй поток работает в фоне и если пользователь не вводит никаких данных в течении минуты закрывает первый поток. Можете представить решение программы.
Ради интереса написал так
using System;
using System.Threading;
using System.Timers;
using Timer = System.Timers.Timer;
namespace ConsoleApplication1
{
class Program
{
private static string UserText;
private static Thread FirstThread;
private static Thread SecondThread;
private static Timer Timer;
static void Main()
{
FirstThread = new Thread(GetText);
SecondThread = new Thread(SessionTimer);
FirstThread.Start();
SecondThread.Start();
}
private static void GetText()
{
UserText = Console.ReadLine();
Console.WriteLine($"Hello my dear, {UserText}");
Console.Read();
}
private static void SessionTimer()
{
Timer = new Timer();
Timer.Elapsed += OnTimedEvent;
Timer.Interval = 60000;
Timer.Enabled = true;
}
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
if (!FirstThread.IsAlive && !SecondThread.IsAlive)
{
Console.WriteLine("Все потоки закрыты!");
}
if (!string.IsNullOrEmpty(UserText))
{
return;
}
if (FirstThread.ThreadState == ThreadState.AbortRequested)
{
return;
}
FirstThread.Abort();
Timer.Stop();
Console.WriteLine("Поток 2 закрыл поток 1");
}
}
}
Есть замечательный метод Task.WaitAny, которому можно задать timeout:
class Program
{
static void Main(string[] args)
{
var readingTask = new Task(() =>
{
var data = Console.ReadLine();
});
Task.WaitAny(
new[]
{
readingTask
},
TimeSpan.FromSeconds(60));
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Не могу понять в чем проблемаЯ доменный пользователь(не локальный), но задача следующая
Есть DataTable, который представляет из себя таблицу из 2 колонок: ИД и Наименование товараПодскажите, каким образом организовать обновление...