首页 > 解决方案 > 不能用布尔标志停止线程

问题描述

我遇到了以下问题:

在 c# 表单应用程序中,我在一个类函数上生成线程,该类函数只有在布尔标志设置为 false 时才应该循环。但它不会在改变布尔值的状态时打破循环。

class Kasa {
    public bool _stop = false;

    private int x;
    private int y;

    public Kasa(int x, int y)
    {
        kasaImageNotActive = BufferedImage.getImage("kasa.jpg");
        kasaImageActive = BufferedImage.getImage("kasa.png");

        this.x = x;
        this.y = y;
    }


    public void toggleAction() {
        _stop = !_stop;
    }

    public void act() {
        while (!_stop) {
             System.Console.WriteLine("aktiw " + x + " - >" + _stop);
         }  
    }
}

因此,在表单代码中,我通过单击按钮调用“toggleAction()”函数,由于线程不断滚动并且整个应用程序没有响应,它似乎没有起到作用。

标签: c#multithreading

解决方案


推荐阅读