c#中while(true)死循环阻塞进程,应该怎么办

在C#开发中,使用while(true)创建的死循环可能导致界面阻塞。通过引入BackgroundWorker控件,可以在后台线程执行循环任务,保持界面响应。在button1_Click事件中启动BackgroundWorker,循环读卡操作放在backgroundWorker1_DoWork方法中,当需要停止时,通过button2_Click事件调用CancelAsync()方法取消操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        我在用c#做一个读卡器,过程中需要点击button进行循环读卡,再点击另一个button停止,我一看到循环读卡就想到while(true)让他一直读,循环读卡的确可以实现,但是之后却无法跳出循环,导致界面锁定,没办法进行操作,最终崩溃。查了好久才知道是属于线程阻塞,会导致初始界面无法使用

解决方法就是c#中的控件backgroundworker,在你想用的button中调用这个控件,之后在backgroundworker中执行你的循环,

代码如下

 private void button1_Click(object sender, EventArgs e)//开始执行按钮
        {
            backgroundWorker1.RunWorkerAsync();
        }

 

 private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)//你要执行的代码
        {
            int ret;
            int iPort = 1;
            ret = InitComm(iPort);
            if (ret == 1)
            {
                int x;
                StringBuilder name = new StringBuilder(), gender = new StringBuilder(), folk = new StringBuilder(), birthday = new StringBuilder(), code = new StringBuilder(), address = new StringBuilder(), agency = new StringBuilder(),

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值