He encontrado algunas preguntas sobre mi problema, pero aun así, no pude con esto por mi cuenta, así que trataré de preguntar aquí. Pegaré el código así que creo que será más fácil de explicar.Pasar datos entre hilos en C#
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Thread thread = new Thread(new ThreadStart(StartCalculation));
thread.Start();
}
private void Form1_Load(object sender, EventArgs e)
{
}
public void StartCalculation()
{
List<int> numbers = new List<int>();
for (int i = 0; i <= 100; i++)
{
numbers.Add(i);
string textForLabel = i.ToString();
label.SafeInvoke(d => d.Text = textForLabel);
}
}
}
- me gustaría tener un acceso desde StartCalculation método que comenzaron en hilo diferente. Me gustaría acceder a esa lista int de Form1 (10 elementos después de 10 segundos, 20 elementos después de 20 segundos, etc.). ¿Es eso posible?
- ¿Sería posible crear una lista en Form1() y luego cambiarla en StartCalculation? Gracias por las respuestas :)
Editado por Groo-/-
public partial class Form1 : Form
{
List<int> list = new List<int>(); // list of int values from game's memory
public Form1()
{
InitializeComponent();
Thread thread = new Thread(new ThreadStart(refreshMemory));
thread.Start();
Thread thread2 = new Thread(new ThreadStart(checkMemory));
thread2.Start();
}
private void Form1_Load(object sender, EventArgs e)
{
}
public void refreshMemory()
{
while (true)
{
// ... refresh game's memory and then, refresh list //
Thread.Sleep(100);
}
}
public void checkMemory()
{
while (true)
{
// eg. if (list[0] == 5) {game:: move_right()}//
Thread.Sleep(100);
}
}
}
estoy haciendo bot juego. Quiero que lea la memoria del juego en un hilo diferente (cambiar la lista de memoria) y luego, con algunos otros métodos (en diferentes hilos) me gustaría leer de esa lista y realizar acciones de juego dependiendo de los valores de memoria. Funciona (o parece que lo es) pero si dices que podría ser inseguro, me gustaría que sea seguro.
Espero no haber hecho el tonto de mi mismo al pegarlo aquí.
Aquí hay un libro: [Enhebrado en C#, Joseph Albahari] (http://www.albahari.com/threading/) – Sjoerd
¡Bien, gracias! Gracias a ese libro, ahora está resuelto :) – Patryk
* "10 elementos después de 10 segundos, 20 elementos después de 20 segundos" *: ¿por qué estas demoras? ¿Qué pasa si el hilo de fondo produce elementos a un ritmo más rápido? O debería funcionar como una cola de productor/consumidor, pero con un umbral de mín. 10 artículos? – Groo