Tôi đã tìm thấy một số câu hỏi liên quan đến vấn đề của mình nhưng vẫn không thể tự mình thực hiện điều này vì vậy tôi sẽ cố gắng hỏi tại đây. Tôi sẽ dán mã để tôi nghĩ rằng nó sẽ dễ dàng hơn để giải thích.Truyền dữ liệu giữa các chủ đề trong 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);
}
}
}
- Tôi muốn có một acces từ phương pháp StartCalculation mà bắt đầu trong chủ đề khác nhau. Tôi muốn truy cập danh sách int đó từ Form1 (10 phần tử sau 10 giây, 20 phần tử sau 20 giây và lâu hơn). Điều đó có thể không?
- Tạo danh sách trong Form1() và sau đó thay đổi nó trong StartCalculation có thể? Cảm ơn câu trả lời :)
Edited cho 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);
}
}
}
tôi là làm cho trò chơi bot. Tôi muốn nó đọc bộ nhớ của trò chơi trong một chủ đề khác (thay đổi danh sách bộ nhớ) và sau đó, với vài phương pháp khác (trong các chủ đề khác nhau), tôi muốn đọc từ danh sách đó và thực hiện các hành động trò chơi tùy thuộc vào giá trị bộ nhớ. Nó hoạt động (hoặc chỉ có vẻ là) nhưng nếu bạn nói nó có thể là không an toàn, tôi muốn làm cho nó an toàn.
Hy vọng tôi đã không đánh lừa bản thân bằng cách dán nó ở đây.
Đây là một cuốn sách: [Threading in C#, Joseph Albahari] (http://www.albahari.com/threading/) – Sjoerd
Vâng, cảm ơn bạn! Nhờ cuốn sách đó, nó đã được giải quyết ngay bây giờ :) – Patryk
* "10 phần tử sau 10 giây, 20 phần tử sau 20 giây" * - tại sao những sự chậm trễ này? Điều gì xảy ra nếu chuỗi nền tạo ra các phần tử với tốc độ nhanh hơn? Hoặc nên làm việc này như là một nhà sản xuất/hàng đợi của người tiêu dùng, nhưng với một ngưỡng tối thiểu. 10 mục? – Groo