我被困在一个情况下,我需要生成一个定义了一些赫兹的频率。 我曾尝试多媒体计时器和所有其他的东西在互联网上公布,但到目前为止无限循环与一些的if-else条件给了我最好的结果。 但这种做法的问题是,它消耗几乎所有的CPU不留空间,用于其他应用程序的正常工作。
我需要一个算法要么产生一些赫兹至千赫兹的频率。
我使用Windows。平台与C#。
我被困在一个情况下,我需要生成一个定义了一些赫兹的频率。 我曾尝试多媒体计时器和所有其他的东西在互联网上公布,但到目前为止无限循环与一些的if-else条件给了我最好的结果。 但这种做法的问题是,它消耗几乎所有的CPU不留空间,用于其他应用程序的正常工作。
我需要一个算法要么产生一些赫兹至千赫兹的频率。
我使用Windows。平台与C#。
不能准确地生成上一个非实时平台的固定频率的信号。 在任何时刻,来自相同或其他处理高优先级的线程可以阻止您的线程的执行。 例如,当GC线程踢,工作线程将被暂停。
话虽这么说,有什么你都不允许有抖动,什么是你需要支持的最高频率是多少?
我会处理这个问题的方法是产生“声波”和输出的声卡。 有一些方法可以访问从C#,例如使用XNA声卡。 正如其他人所指出的那样,使用CPU因为这是不是一个好方法。
使用Thread.Sleep(delay);
在循环
这是降低处理器使用率
当您正在生成一个计时器,你会希望根据你的频率周期进入睡眠状态。
你将不得不在自己的线程和呼叫运行频率发生器
Thread.Sleep(yourFrequencyPeriodMs);
在周期的每一迭代。