Что оптимальнее использовать для циклических процессов - C#
Формулировка задачи:
код формы
в form1 я обновляю данные листов(точней добавляю в них значения).
программа анимирует работу станка.у него есть двигатель,значит действия выполняются циклически. я хочу чтобы в лист забивалось определенное количество значений(пока длится цикл ) ,а при добавлении в конец каждого следующего первое удалялось(чтобы много памяти не ела прога,не тормозила).может вообще не лист а что другое использовать?
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(); } } }
Решение задачи: «Что оптимальнее использовать для циклических процессов»
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>();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д