You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# Tasks与Threads使用疑问:多设备测试程序卡顿崩溃问题

多USB设备HIDSharp采集程序的性能崩溃问题

问题场景

  • 基于HIDSharp开发多USB设备连接程序,通过创建多个APData实例并加入列表统一管理
  • GUI点击开始按钮后,选中设备移入GridView,每个APData实例通过Task每隔约40ms测试设备参数
  • 仅连接2台设备时运行正常;连接8台设备时,部分设备数据采集变慢,随后程序及电脑逐渐卡顿直至冻结,甚至出现蓝屏
  • 已排查排除GUI影响,确认任务调用的类为静态类,仅共享设备跟踪列表及关联采集数据,目前不确定排查方向,猜测需拆分测试任务但无明确依据

任务执行核心代码

foreach (APData ap in lst)
{
    bool inputmode = ConnectionManager.StartAutomaticSampling(ap);
    var t1 = new Task(() =>
    {
        while (ConnectionManager.ComparedTime < 1)
        {
            ConnectionManager.BeginNoiseTest(ap, APNG_Application.Program.unit, inputmode);
            date = DateTime.Now; // Update time.
            ConnectionManager.ComparedTime = DateTime.Compare(date, endTime);
        }

        ap.DoneBeingTested = true;
        ConnectionManager.NoiseTestEnded(ap, APNG_Application.Program.unit);
        CalculateSNR(APNG_Application.Program.unit, ap);
        saveFile(APNG_Application.Program.unit, ap);
    });

    t1.Start();
}
Task.WaitAll(Task.Delay(timeLimit));

其中ConnectionManager.BeginNoiseTest(ap, APNG_Application.Program.unit, inputmode);是导致程序卡顿崩溃的核心代码。

疑问

  • 是否误解了Task的用法?原本以为多Task可实现异步提速,是否应改用Threads?
  • 8个Task会耗尽CPU资源吗?
  • 如需其他代码片段可提供。

内容的提问来源于stack exchange,提问作者Steven Villarreal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 20:09:10