Класс в потоке, правильное решение - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, есть класс.
class ...{
 
Функция 1(){
while(true)
}
 
Функция 2(){
 
}
}
При создании экземпляра вызывается конструктор, из конструктора цепная реакция по функциям. Класс работает в потоке. В итоге

Функция 1

крутит цикл, я не смогу вызвать функцию

Функция 2()

пока функция

Функция 1()

в потоке. Задача: Каким образом мне вызвать функцию

Функция 2()

если функция

Функция 1()

всегда в цикле? Экземпляр класса должен быть один. P.S Вызов должен быть потокобезопасным дабы

Функция 1()

иногда вызывает

Функция 2()

. В принципе можно при вызове конструктора как-то образом вернуть ссылку на обьект который мне нужен. Но хотелось бы что бы вызов был из класса, не хочу раскидывать куски по программе.

Решение задачи: «Класс в потоке, правильное решение»

textual
Листинг программы
        class Example
        {
            private static Example _instance = new Example();
 
            public static Example Instance
            {
                get { return _instance; }
            }
 
            private Example()
            {
                Task task = Task.Run(() => Function1());
                Task run = Task.Run(() => Function2());
            }
 
            private async static void Function1()
            {
                while (true)
                {
                    await Task.Delay(1000);
                    Console.WriteLine("Метод №1");
                }
            }
 
            private static void Function2()
            {
                Console.WriteLine("Метод №2");
                Function1();
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5
Похожие ответы