Класс в потоке, правильное решение - 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();
}
}