首页 > 解决方案 > 以随机间隔使用随机数填充堆栈(自己的堆栈类)的程序

问题描述

以随机间隔用随机数填充堆栈(自己的堆栈类)的程序。插入的项目应添加到名为 sum 的变量中。

线程密切关注堆栈,当一个项目可用时修改总数

我创建了我的堆栈

public int capacity { get; set; }
    int[] stack;
    int top = 0;

public int push(int element)
    {
        if (top == capacity - 1)
        {
            return 1;
        }
        else
        {
            top = top + 1;
            stack[top] = element;

            return 0;
        }
    }

首先在设定的时间间隔内对两件事感到困惑,我知道我在计时器上错了,但在哪里???

private void button1_Click(object sender, EventArgs e)
    {
        System.Timers.Timer t = new System.Timers.Timer(rand.Next(1000, 5000));

        t.Elapsed += (s,r) => { insertIntoStack(); };
        t.Enabled = true;
        t.Start();

    }

public void insertIntoStack()
    {
        textBox1.Text = stack1.getsum().ToString();
        int number = stack1.generateRandomNumber();
        textBox2.Text = number.ToString();
        stack1.push(number);
        textBox3.Text = stack1.getsum().ToString();

    }


public int generateRandomNumber()
    {
        int number = 0;
        System.Random rand = new Random();
        number = rand.Next(1, 99);

        return number;
    }

    public void doSum()
    {
        sum += stack[top];
    }

第二个线程关注堆栈,当一个项目可用时修改总数任何人都可以提供帮助,我对 c# 完全陌生

标签: c#multithreadingtimer

解决方案


这可能是您的insertIntoStack()功能中冻结的东西 - 您没有提供调试所需的所有代码(我不知道如何generateRandomNumber()getSum()工作)。

如果您想动态推送它,您应该考虑使用List<T>or Stack,而不是。int[]


推荐阅读