Tôi đang làm việc trên một dự án tạo ra 20 ~ 50 tác vụ mới cứ 30 ~ 80 giây một lần. Mỗi tác vụ tồn tại trong 10 ~ 20 giây.Khởi động lại tác vụ hoặc tạo một tác vụ mới?
Vì vậy, tôi đang sử dụng một Timer để tạo ra những nhiệm vụ mới, nhưng mọi lúc tôi luôn tái tạo cùng một công việc, mã này là như thế này:
public class TaskRunner : IDisposable
{
private readonly Timer timer;
public IService service;
public ThreadRunner(IService service) {
this.service = service;
timer = new Timer(10000);
timer.Elapsed += Execute;
timer.Enabled = true;
}
}
private void Execute(object sender, ElapsedEventArgs e)
{
try
{
Task.Factory.StartNew(service.Execute);
}
catch (Exception ex)
{
logger.ErrorFormat("Erro running thread {0}. {1}", service, ex);
}
}
public void Dispose()
{
timer.Dispose();
}
}
Câu hỏi của tôi là, theres cách nào để tạo ra một nhiệm vụ và tiếp tục khởi động lại nó, vì vậy tôi không cần phải bắt đầu một nhiệm vụ mới Task.Factory.StartNew (service.Execute); mọi lúc?
Hoặc đó là điều mà tôi không phải lo lắng, và bạn có thể tiếp tục tạo công việc mới không?
Có bất kỳ hướng dẫn/phương pháp hay nhất nào về cách tôi nên làm việc trên trường hợp này, với loại chủ đề đó không?
Bạn đang sử dụng _Tasks_, chứ không phải _Threads_. tạo nên sự khác biệt ở đây. –
'Task.Factory.StartNew' không" bắt đầu một chủ đề mới "(thường) –
Ok, tôi hiểu rồi. Câu hỏi thay đổi thành "Tôi có nên tạo Công việc mới mọi lúc hay tôi có thể khởi động lại nó?" –