首页 > 解决方案 > 如何在保持程序轻量的同时模拟键盘并同时运行多个命令?

问题描述

作为一个爱好最近我一直在做一个钢琴(Midi)到键盘软件,但是我遇到了一个问题,能够同时听和执行几个键我决定使用 if 和 else if,但是我了解程序正在使用来自 cpu 的足够资源以及何时激活 if

注释示例 1:

if (RawNotes.Contains ("Len: 0") == true && RawNotes.Contains ("0 NoteOn Ch: 1 C") == true && RawNotes.Contains ("#") == false)

关闭示例 2 注意:

else if (RawNotes.Contains("Vel") == true && RawNotes.Contains("0 NoteOn Ch: 1 C") == true && RawNotes.Contains("#") == false)

检查 RawNotes 字符串

示例 RawNotes 字符串输出

这个字符串在不断变化,这就是字符串使用 Console.WriteLine(RawNotes) 给我的输出;

0 NoteOn Ch: 1 C3 Vel: 41 Len: 0 //<-- NoteOn
0 TimingClock
0 TimingClock
0 TimingClock
0 TimingClock
0 NoteOn Ch: 1 C3 Vel: 0 //  <-- NoteOff
0 AutoSensing
0 TimingClock

而代码的主要部分,自从if这么说以来,它只能执行几秒钟吗?

 Thread One = new Thread(() =>
{
     while (true)
                    {
                        if (RawNotes.Contains ("Len: 0") == true && RawNotes.Contains ("0 NoteOn Ch: 1 C") == true && RawNotes.Contains ("#") == false)

                        {
                            sim.Keyboard.KeyDown((VirtualKeyCode)Enum.Parse(typeof(VirtualKeyCode), Key1)); // <-- The problem
                        }

 else if (RawNotes.Contains("Vel") == true && RawNotes.Contains(MultiHelp + "C") == true && RawNotes.Contains("#") == false)
                        {
                            sim.Keyboard.KeyUp((VirtualKeyCode)Enum.Parse(typeof(VirtualKeyCode), Key1));

//And so on...

标签: c#midipiano

解决方案


推荐阅读