Có cách nào để yêu cầu một đại biểu chạy trên một chủ đề cụ thể không?Gọi đại biểu về một chủ đề cụ thể C#
Nói rằng tôi có:
CustomDelegate del = someObject.someFunction;
Thread dedicatedThread = ThreadList[x];
Tôi có thể có một nền tảng phù hợp sợi chạy dài và gọi các đại biểu của mình vào nó bất cứ khi nào tôi cần nó. Nó phải là cùng một chủ đề mỗi lần.
[Chỉnh sửa]
Lý do tại sao tôi muốn nó được trên một sợi chuyên dụng là thời gian là tôi Inten để chạy các đại biểu vào nó và đình chỉ các chủ đề sau y
mili giây, và tiếp tục các chủ đề khi tôi chạy một đại biểu khác trên đó. Tôi thấy điều này là không thể. Tôi sẽ có một hàng đợi đại biểu và cho phép chức năng chính của luồng đọc và chạy từ nó.
Để làm rõ với một ví dụ cụ thể, tôi có một hệ thống trò chơi với một loạt các chuỗi trình phát. Tôi muốn mỗi playerthread để chạy xử lý sự kiện cho các sự kiện trò chơi trên đó. Nếu trình xử lý sự kiện mất quá nhiều thời gian, tôi muốn có thể tạm dừng trình phát cụ thể đó cho đến khi sự kiện tiếp theo bằng cách tạm dừng chuỗi của nó.
Vì vậy, có một chuỗi chuyên dụng mà tôi có thể chạy nhiều trình xử lý sự kiện, tôi có thể tạm dừng AI của một người chơi cụ thể trong trường hợp nó bị lỗi hoặc mất quá nhiều thời gian.
Cảm ơn bạn đã chỉ ra ActionThread, trông rất hữu ích. Tôi cần phải đóng gói mã bên ngoài mà tôi có ít quyền kiểm soát trong một chuỗi. Tất cả những gì tôi có là đại biểu cho mã bên ngoài. Nếu tôi có thể đảm bảo rằng đối tượng nằm trong một chuỗi cụ thể, tôi có thể "tạm dừng" đối tượng đó bằng cách chỉ tạm dừng chuỗi. Tôi không nghĩ rằng threadpool sẽ cho phép tôi "tạm dừng" đối tượng độc đáo. – Raynos
Một lời cảnh báo: có thể (thậm chí có khả năng) gây ra tình trạng deadlocks vô tình bằng cách đình chỉ/nối lại các luồng. Nếu có thể, hãy thay đổi mã bên ngoài. Nếu điều đó là không thể, sau đó xem xét sử dụng ưu tiên luồng thay vì tạm dừng/tiếp tục. –