Очередь из входных параметров одной функции [дубликат]

93
04 июля 2021, 23:40
На этот вопрос уже даны ответы здесь:
Имплементация Producer/Consumer pattern (5 ответов)
Закрыт 1 год назад.

Необходимо создать поток, в котором будет функция и очередь разных параметров и он будет по мере добавления в очередь данных параметров запускать функцию. Задержка между добавлениями может быть и минута, поток просто должен висеть и использовать функцию, когда в очередь добавляются параметры.

Пример : У меня есть событие, которое добавляет в список List числовые значения от 1 и до 10. И в зависимости от значения мне необходимо вызывать функцию, например void SetValue(int val). Событие вызывается в случайные моменты времени.

Answer 1

Думаю, что вам подойдёт такая вещь как ReactiveExtensions. Есть неплохой сайт для изучения основ.

Ваш пример будет выглядеть на нём примерно так:

    static void Main(string[] args)
    {
        var subject = new Subject<string>();
        var observable = subject.AsObservable(); //Чтобы пользователи не смогли закастить обратно
        Consume(observable);
        subject.OnNext("First");
        Thread.Sleep(1000);
        subject.OnNext("Second");
        Thread.Sleep(5000);
        subject.OnNext("Third");
        subject.OnCompleted();
        Console.ReadKey();
    }
    private static void Consume(IObservable<string> observable)
    {
        observable.Subscribe(
            Console.WriteLine,
            Console.WriteLine,
            () => Console.WriteLine("COmpleted!")); //Никак не обрабатываем IDisposable для простоты
    }

Но чаще всего удобнее бывает использовать фабричные методы Observable, чем напрямую взаимодействовать с Subject.

READ ALSO
Ожидание добавления данных, если они используются где-то

Ожидание добавления данных, если они используются где-то

У меня есть событие, которое добавляет в список типа List данныеИ во всём остальном коде я использую этот список

83
Как добавить .dll файл в Xamarin.Forms проект?

Как добавить .dll файл в Xamarin.Forms проект?

В обычном C# проекте я просто скопировал этотdll в папку проекта и использовал

100
При компиляции сбитая кодировка

При компиляции сбитая кодировка

Сегодня поменяли ПК на более мощныйУстановили такую же версию Visual Studio (2015 Enterprise)

107
Newtonsoft Json выдаёт пустую строку

Newtonsoft Json выдаёт пустую строку

От сервера получаю такой Json ответ:

91