Что оптимальнее использовать для циклических процессов - C#

Узнай цену своей работы

Формулировка задачи:

код формы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace СтрогальныйСтанок
{
    public partial class Form2 : Form
    {
        List<float> SpeedOx = new List<float>();
        List<float> SpeedOy = new List<float>();
        List<float> AcceleratOx = new List<float>();
        List<float> AcceleratOy = new List<float>();
        List<float> TestList = new List<float>();
 
        Timer timer;
        Panel panel;
 
        Graphics graphics;
        BufferedGraphics bufferedGraphics;
        BufferedGraphicsContext bufferedGraphicsContext;
 
        public Form2()
        {
            InitializeComponent();
 
            ClientSize = new System.Drawing.Size(640,480);
            StartPosition = FormStartPosition.CenterScreen;
 
            panel = new Panel();
            panel.Location = new Point(2,50);
            panel.Width = ClientSize.Width - 4;
            panel.Height = ClientSize.Height - 60;
            Controls.Add(panel);
 
            timer = new Timer();
            timer.Interval = 1;
            timer.Tick += new EventHandler(timer_Tick);

            InitializeGraphics();
 
            timer.Start();
        }
 
        public void Update(List<float> SpeedOx,List<float>SpeedOy,List<float>AcceleratOx,List<float>AcceleratOy)
        {
            this.SpeedOx = SpeedOx;
            this.SpeedOy = SpeedOy;
            this.AcceleratOx = AcceleratOx;
            this.AcceleratOy = AcceleratOy;
        }
 
        private void InitializeGraphics()
        {
            graphics = panel.CreateGraphics();
            bufferedGraphicsContext = new BufferedGraphicsContext();
            bufferedGraphics = bufferedGraphicsContext.Allocate(graphics, new Rectangle(0, 0, panel.Width, panel.Height));
            //bufferedGraphics.Graphics.PageUnit = GraphicsUnit.Millimeter;
        }
 
        private void DrawToBuffer()
        {
            float x = 10;
            bufferedGraphics.Graphics.Clear(Color.White);
            for (int i = 0; i < SpeedOx.Count; i++)
            {
                bufferedGraphics.Graphics.FillEllipse(new SolidBrush(Color.Red), x, SpeedOx[i]*80+100, 5, 5);
                x += 0.5f;
            }
            
            bufferedGraphics.Render();
        }
 
        public void timer_Tick(object sender,EventArgs e)
        {
            //if (SpeedOx.Count > 20)
            //{
            //    timer.Stop();
            //    MessageBox.Show("ddd");
            //}
            DrawToBuffer();
        }
 
        private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            timer.Stop();
            SpeedOx.Clear();
            SpeedOy.Clear();
            AcceleratOx.Clear();
            AcceleratOy.Clear();
        }
    }
}
в form1 я обновляю данные листов(точней добавляю в них значения). программа анимирует работу станка.у него есть двигатель,значит действия выполняются циклически. я хочу чтобы в лист забивалось определенное количество значений(пока длится цикл ) ,а при добавлении в конец каждого следующего первое удалялось(чтобы много памяти не ела прога,не тормозила).может вообще не лист а что другое использовать?

Решение задачи: «Что оптимальнее использовать для циклических процессов»

textual
Листинг программы
        List<float> SpeedOx = new List<float>();
        List<float> SpeedOy = new List<float>();
        List<float> AcceleratOx = new List<float>();
        List<float> AcceleratOy = new List<float>();
        List<float> TestList = new List<float>();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.5 из 5
Похожие ответы