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

C#如何实现持续运行while循环直到用户按下按键终止?

实现方案

核心逻辑是将数据生成的耗时循环放到独立后台线程运行,主线程仅负责非阻塞监听用户按键,两者完全并行互不干扰,同时做并发控制避免共享数据读写冲突。

完整可运行代码

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

class Program
{
    // 共享数据存储对象
    private static List<int> _dataList = new List<int>();
    // 并发锁,保证多线程读写安全
    private static object _lockObj = new object();
    // 程序退出标记
    private static bool _isRunning = true;

    static void Main(string[] args)
    {
        // 启动后台数据生成任务
        Task.Run(GenerateDataLoop);

        Console.WriteLine("程序运行中:按任意键查看已生成数据,按q键退出程序");
        // 主线程监听用户输入
        while (_isRunning)
        {
            // 非阻塞检测是否有按键输入,不会暂停等待
            if (Console.KeyAvailable)
            {
                var key = Console.ReadKey(true);
                if (key.Key == ConsoleKey.Q)
                {
                    _isRunning = false;
                    Console.WriteLine("正在停止程序...");
                    break;
                }
                // 加锁读取数据输出
                lock (_lockObj)
                {
                    Console.WriteLine($"\n当前已生成{_dataList.Count}条数据,列表如下:");
                    foreach (var item in _dataList)
                    {
                        Console.WriteLine(item);
                    }
                    Console.WriteLine("------------------------");
                }
            }
            // 避免主线程空转占用过高CPU
            Thread.Sleep(100);
        }
    }

    // 后台数据生成循环
    private static void GenerateDataLoop()
    {
        int count = 0;
        while (_isRunning)
        {
            count++;
            // 加锁写入数据
            lock (_lockObj)
            {
                _dataList.Add(count);
            }
            // 间隔2秒生成一次
            Thread.Sleep(2000);
        }
    }
}

关键特性说明

  • 后台生成逻辑全程不受输入操作影响,严格按照2秒一次的频率持续运行,不会出现中断、延迟
  • 按键监听为非阻塞逻辑,不会在循环中强制等待用户输入,用户随时按键都能立即响应
  • 加锁机制保证了读写操作不会并发冲突,避免List出现数据损坏、遍历异常等问题
  • 支持随时查看数据,也支持正常安全退出程序

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 20:24:08