• Как контролировать память кортежей?

    @DarkByte2015
    А с чего ты взял что тут есть утечка? Да - увеличивает расход памяти, а чего ты ожидал? Ты создаешь на каждой итерации по два массива и сборщик мусора не успевает их утилизировать. По моему это нормально. Лучше подумай как оптимизировать алгоритм чтобы не создавать массивы на каждой итерации. Возможно надо переписать функцию чтобы она принимала ссылки на массивы и заполняла их внутри, а массивы создавались до цикла один раз.
    Ответ написан
  • Как сделать задержку с интервалом?

    @basrach
    Красиво будет сделать вот так:
    1) Установить пакет System.Reactive
    2) Дописать:

    ...
    private Subject<int> myHotkey = new Subject<int>();
    
    public MainForm()
    {
        ...
    
        myHotkey
            .AsObservable()
            .Throttle(TimeSpan.FromSeconds(1))
            .Subscribe(hotkeyid => MessageBox.Show("Нажата горячая клавиша с ID:  " + hotkeyid));
    }
    
    ...
    
    protected override void WndProc(ref Message keyPressed)
    {
        ...
                switch (keyPressed.WParam.ToInt32())
                {
                    case 1: 
                    {
                        SetPrtSc(); 
                        myHotkey.OnNext(keyPressed.WParam.ToInt32());
                    }
                    break;
    ...
    Ответ написан
    Комментировать