c# - 使用线程连续检查值的更改

标签 c# multithreading continuous

我正在尝试创建一个线程,它将不断检查值的更改,然后在位于 GUI 中的 PictureBox 中直观地显示该更改。

我实际写的有点复杂,所以我在保留基本思想的同时进行了简化,如果这还不够,我很乐意提供说明:

public class CheckPictures
{
    PictureBox update;
    List<String> check;

    public CheckPictures(PictureBox anUpdate, List<String> aCheck)
    {
        update = anUpdate;
        check = aCheck;
    }

    public void start()
    {
        while(true)
        {
            if (aCheck[0] == "Me")
            {
                update.Image = Image.fromFile("");
            }
        }
    }
}

static int Main(string[] args)
{ 
    List<String> picturesList = new List<String>();

    CheckPictures thread1 = new CheckPictures(PictureBox1, picturesList);
    Thread oThread1 = new Thread(thread1.start));
}

如果我要将字符串“Me”添加到 pictureList,我想要它做的是动态更改 PictureBox1 中的图片。上面的代码没有像我希望的那样工作。我原以为通过传递实际的 PictureBox 和 List,其他地方对 List 的任何更改都会被线程捕获。所以我的第一个问题是:这可能吗?如果是这样,我需要对我的代码进行哪些更改才能实现它?

最佳答案

您可能想使用事件。您注册一个事件处理程序,当一个线程中发生某些变化时,它会调用另一个线程中的事件处理程序来完成工作。忙等待浪费CPU。

关于c# - 使用线程连续检查值的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10181395/

相关文章:

r - Tukey HSD 用于混合连续变量和分类变量,错误 : "no factors"

c# - Bloomberg API - 使用 .Net API 获取底层证券上的 FUT_CHAIN

ios - 使核心数据线程安全

c# - 在同步块(synchronized block)内部和外部使用字段是否安全?

java - SecureRandom 流具有多个线程的奇怪行为

c# - 从 .NET Windows 服务调用 Shell32.dll

sql-server - sql仅对连续行进行排名

deployment - 从 TFS 2012 Update 2 持续部署到 Azure

c# - 用于 Web 浏览器控制的 Windows C# 应用程序

c# - 比较同一 URI 的不同表示