一个以随机间隔填充随机数的堆栈(自己的堆栈类)的程序

时间:2018-09-07 09:40:51

标签: c# multithreading timer

一个程序,用随机数以随机间隔填充堆栈(自己的堆栈类)。插入的项目应添加到名为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#来说是全新的

1 个答案:

答案 0 :(得分:0)

您的insertIntoStack()函数中可能冻结了一些内容-您尚未提供调试所需的所有代码(我不知道generateRandomNumber()getSum()的工作原理)。

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