Задать вопрос
HSGOD
@HSGOD
c#

Как в коде поставить один цикл в ожидание не задевая всего кода?

Вообщем написал код там в нём несколько циклов, проблема в том что программа должна выполнять цикл с промежутком и в одном цикле их несколько прям, для этого использовал команды сна, чекал чатгпт, мне нужно оставить программу в текущем методе не переделывая, но при этом чтобы эти сны были никак сны, а как обычное ожидание, причем не нужно чтобы программа делала 2 вещи сразу, а делала последовательно, но потом запоминала, что к примеру при следующей работе программы она не должна входить во-второй цикл n-ое время
  • Вопрос задан
  • 204 просмотра
Подписаться 1 Средний 2 комментария
Решения вопроса 1
Viji
@Viji
DevOps Engineer
используй потоки

Thread thread1 = new Thread(() =>
{
    // код цикла
});

thread1.Start(); - проверяем поток
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
InnieSharp
@InnieSharp
C# программист
У тебя есть цикл. Он выполняется, и надо сделать так, чтобы он не выполнялся например 30 секунд с момента последнего выполнения. Если так, то вот код:
using System;
using System.IO;
using System.Globalization;

namespace sharis
{
	class Program
	{
		public static string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\datetime";
		public static DateTime last;
		public static bool work = false;
		public static TimeSpan time = new TimeSpan(0, 0, 30);
		
		public static void Main(string[] args)
		{
			while(true)
			{
				if(File.Exists(path))
				{
					last = DateTime.Parse(File.ReadAllText(path));
					if(DateTime.Now.Subtract(last) >= time)
						work = true;
				}
				else
					work = true;
				for(int i = 21; i >= 0 && work; i -= 7)
				{
					if(i != 7)
						Console.WriteLine(i);
					else
					{
						last = DateTime.Now;
						File.WriteAllText(path, last.ToString());
					}
				}
				Console.ReadKey(true);
			}
		}
	}
}

Надеюсь помог.
UPD: Поместил изменение времени последнего запуска в цикл.
Ответ написан
yarosroman
@yarosroman Куратор тега C#
C# the best
async\await, TPL (https://learn.microsoft.com/ru-ru/dotnet/standard/...), потоки, пул потоков. Вез кода сложно сказать что больше подойдет.
Ответ написан
Ваш ответ на вопрос

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

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