C# 中的多媒体定时器中断(前两个中断不好)

2024-01-05

我使用分辨率为 1 毫秒、周期为 10 毫秒的多媒体计时器。问题是多媒体计时器严重中断了前两个事件,因为我得到了 1 ms 的差异,这不是我想要的。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.mmtimer.Tick += new System.EventHandler(this.mmtimer_Tick); 
    }

    Multimedia.Timer mmtimer = new Multimedia.Timer();
    private void Form1_Load(object sender, EventArgs e)
    {
        mmtimer.Resolution = 1;
        mmtimer.Mode = Multimedia.TimerMode.Periodic;
        mmtimer.Period = 10;
        mmtimer.SynchronizingObject = this;
    }

    private void S_Click(object sender, EventArgs e)            
    {
        TD.Items.Clear();
        MT.Items.Clear();
        delta_MT.Items.Clear();
        double T = DateTime.Now.Hour * 60 * 60 * 1000 + DateTime.Now.Minute * 60 * 1000 + DateTime.Now.Second * 1000 + DateTime.Now.Millisecond;
        Point C = Cursor.Position;
        TD.Items.Add(C.ToString());
        MT.Items.Add(T.ToString());         

        try
        {                              
            mmtimer.Start();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK,
                MessageBoxIcon.Stop);
        }            
    }

    private void Stop_Click(object sender, EventArgs e)
    {            
        mmtimer.Stop();

        double T = DateTime.Now.Hour * 60 * 60 * 1000 + DateTime.Now.Minute * 60 * 1000 + DateTime.Now.Second * 1000 + DateTime.Now.Millisecond;
        Point C = Cursor.Position;

        TD.Items.Add(C.ToString());
        MT.Items.Add(T.ToString());
        M();
    }

    private void mmtimer_Tick(object sender, System.EventArgs e)
    {
        double T = DateTime.Now.Hour * 60 * 60 * 1000 + DateTime.Now.Minute * 60 * 1000 + DateTime.Now.Second * 1000 + DateTime.Now.Millisecond;
        Point C = Cursor.Position;

        TD.Items.Add(C.ToString());

        MT.Items.Add(T.ToString());

    }
    void M()
    {
        for (int i = 0; i < MT.Items.Count - 1; i++)
        {
            double A1 = Convert.ToDouble(MT.Items[i + 1]);
            double A2 = Convert.ToDouble(MT.Items[i]);
            double d = A1 - A2; 
            delta_MT.Items.Add(d);
        }
    }
}

您能告诉我如何修复前两个中断吗?如果可能。


当多媒体定时器运行时standard将分辨率更改为之前的分辨率1,计时器将首先完成其当前周期。新的周期仅在下一次中断后生效。设置多媒体定时是一项同步工作。因此,它可能会延迟多达 20ms(某些系统上的中断周期)。 如果您想确保计时方案从主代码开始就有效,您应该在主代码之前 2 个中断周期调用多媒体时间配置。我想 50 毫秒你应该没问题。

您观察到的第一个中断的延迟取决于您对系统中断进行调用的时间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 中的多媒体定时器中断(前两个中断不好) 的相关文章

  • 每个托管线程是否都有自己对应的本机线程?

    我想知道是否在 Net 中创建托管线程 通过调用Thread Start 导致在后台创建一个本机线程 那么托管线程是否有对应的本机线程呢 如果是 当托管线程等待或睡眠时 是否意味着相应的本机线程也在等待或睡眠 是的 NET 线程映射到所有当
  • 如何在c++中读取pcap文件来获取数据包信息?

    我想用 C 编写一个程序来读取 pcap 文件并获取数据包的信息 例如 len sourc ip flags 等 现在我找到了如下代码 我认为它会帮助我获取信息 但是我有一些疑问 首先我想知道应该将哪个库添加到我的程序中 然后什么是 pca
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 为什么极端下派生类(多重虚拟继承)的大小包括超类成员大小的两倍?

    include
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 由 IHttpClientFactory 注入时模拟 HttpClient 处理程序

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 在 Visual Studio 2010 中从 Fortran 调用 C++ 函数

    我想从 Fortran 调用 C 函数 为此 我在 Visual Studio 2010 中创建了一个 FORTRAN 项目 之后 我将一个 Cpp 项目添加到该 FORTRAN 项目中 当我要构建程序时出现以下错误 Error 1 unr
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • CMake 无法确定目标的链接器语言

    首先 我查看了this https stackoverflow com questions 11801186 cmake unable to determine linker language with c发帖并找不到解决我的问题的方法 我
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • 为什么 gcc 抱怨“错误:模板参数 '0' 的类型 'intT' 取决于模板参数”?

    我的编译器是gcc 4 9 0 以下代码无法编译 template
  • 使用 C# 读取 Soap 消息

  • C++ 函数重载类似转换

    我收到一个错误 指出两个重载具有相似的转换 我尝试了太多的事情 但没有任何帮助 这是那段代码 CString GetInput int numberOfInput BOOL clearBuffer FALSE UINT timeout IN
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock
  • 使用 .NET Process.Start 运行时挂起进程 - 出了什么问题?

    我在 svn exe 周围编写了一个快速而肮脏的包装器来检索一些内容并对其执行某些操作 但对于某些输入 它偶尔会重复挂起并且无法完成 例如 一个调用是 svn list svn list http myserver 84 svn Docum

随机推荐

  • QueryInterface 失败并显示 E_ACCESSDENIED

    以下方法是 DCOM 服务器方法 COM客户端和服务器运行在不同的WinXP机器上 COM 客户端调用RegisterClient方法注册回调接口 问题是QueryInterface方法失败并显示错误代码E ACCESSDENIED 问题的
  • 在 R 中,拆分数据帧,以便子集数据帧包含前一个数据帧的最后一行和后续数据帧的第一行

    关于如何分割数据框有很多答案 例如如何分割数据框 https stackoverflow com questions 3302356 how to split a data frame 但是 我想分割一个数据帧 以便较小的数据帧包含前一个数
  • 删除txt文件中的换行符

    如果我想从文本文件中删除换行符 如下所示 hello there 我使用这样的简单代码 with open words txt as text for line in text print line strip 它输出这个 hello th
  • 变量名中的问号

    在 React 自定义钩子中 我们以下面的方式返回订单号 变量后面的问号是什么receipt order id意味着反应 export const useTest props gt return orderTestNumber receip
  • Riverpod - 以更好/优雅的方式创建具有异步依赖项的服务

    我写了一些代码 提供了ApiService to a StateNotifier The ApiService依赖于authenticatorclient 身份验证客户端必须异步创建 因为它使用共享首选项来获取令牌 我只是想弄清楚他们是否是
  • 全日历中只有月视图(删除/隐藏“日”和“周”视图)

    我的全日历有 月 周 日 视图 我想删除或隐藏 周 和 日 视图 因为我们只使用 月 视图 你能告诉我该怎么做吗 当您启动 fullcalendar 时 不要包含agendyDay 和agendaWeek 就像是 calendar full
  • AWS Lambda 安排延迟执行运行一次

    我有一个带有 Lambda 的 API 网关 对于某些端点 我想在将来安排一次执行 运行一次 例如在 T 时间进行 REST 调用 我希望 lambda 在 T 时间安排一次执行 20分钟 我发现实现此目的的唯一解决方案是使用 boto3
  • 使用 R grid 包的线条

    我正在使用 R 和 cygwin 并尝试绘制一些基本图形 以下是 Paul Murrell 的一篇论文中的一个简单示例 library grid x lt rnorm 50 y lt x rnorm 50 1 2 rx lt range x
  • 要在实体框架中编辑多对多关系,为什么必须先清除集合?

    我有以下代码用于编辑用户所在的部门 出于某种原因 method1导致 EF 尝试再次插入关系 并导致主键错误 其中method2成功了 为什么代码是method1不知道通过重新分配值 我只想要新的部门集合 是method2更新值的首选方法
  • 多个服务主机有什么好处?一个 ServiceHost 是否支持一个端点上的多个同时连接?

    我正在考虑自行托管我的 WCF 服务 而不是使用 IIS 对我来说 一个大问题是我是否需要像 IIS 那样实例化多个服务主机 或者一个就足够了 除了由于隔离而导致的安全原因之外 多个服务主机还有什么好处吗 一台服务主机可以同时为一个端点上的
  • ssis 过滤掉值以字母开头的行

    在 SSIS 项目中 我尝试从 Excel 文件源中筛选出行 其中列的值以字母开头 后跟数字 某些单元格包含多个值 并且并非所有单元格都遵循某种数据类型格式 目前数据流程如下 Excel Source gt Data Conversion
  • Google Drive API - 获取包括文件夹在内的文件列表

    我需要列出用户驱动器云中的所有图像 I use https www googleapis com drive v2 files https www googleapis com drive v2 files使用正确的过滤器来查询所有图像 我
  • inotify 不会在文件修改时触发通知

    我一直在调整这个例子here http www ibm com developerworks linux library l ubuntu inotify index html使其反复监视文件的 修改 我的代码是here http past
  • Fluent NHibernate - 配置 Oracle Data Provider ODP

    我是 NHibernate 和 Fluent NHibernate 的新手 我正在尝试让以下配置正常工作 private static ISessionFactory CreateSessionFactory return Fluently
  • Python 中的正则表达式反向引用问题

    我不知道为什么这不起作用 也许我遗漏了 Python 正则表达式的一些东西 这是我的正则表达式和我希望它匹配的示例字符串 PHONE REGEX lt gt phone EXAMPLE
  • 向传单地图添加任意图像

    我正在尝试使用传单来显示比平时更小的地图 所以我不想使用普通的平铺系统 我不关心平滑缩放和在需要时加载更高分辨率的图块 相反 我尝试从图像文件添加光栅图像 可以这么说当我谷歌 手绘地图 时出现 So I try download file
  • 将角色关联到正在运行的 AWS 实例

    为了运行AWS监控脚本 http docs aws amazon com AmazonCloudWatch latest DeveloperGuide mon scripts perl html http docs aws amazon c
  • 创建 TCP 网络错误以进行单元测试

    我想在测试期间创建各种网络错误 我在 Linux 上直接在 C 中使用 Berkely 套接字 API 我正在 Boost Test 中的另一个线程中运行模拟服务器 该线程在本地主机上侦听 例如 我想在连接期间创建超时 到目前为止 我已经尝
  • 取消图标的亮点

    在编程和查看所有不同的应用程序时 我意识到应用程序商店中的某些应用程序顶部没有亮起的突出显示 使其看起来更具 3D 效果 我有一个应用程序的想法 但我需要去掉重点 该应用程序已在 Xcode 中编程 因此如果有人回答 那就太好了 谢谢 fr
  • C# 中的多媒体定时器中断(前两个中断不好)

    我使用分辨率为 1 毫秒 周期为 10 毫秒的多媒体计时器 问题是多媒体计时器严重中断了前两个事件 因为我得到了 1 ms 的差异 这不是我想要的 public partial class Form1 Form public Form1 I