Từ những gì tôi có thể nói tôi có các thông tin gây hiểu lầm. Tôi cần phải có một sợi riêng biệt chạy trong nền.Cách đảm bảo một chủ đề mới được tạo khi sử dụng phương thức Task.StartNew
Tại thời điểm này tôi làm điều đó như thế này:
var task = Task.Factory.StartNew
(CheckFiles
, cancelCheckFile.Token
, TaskCreationOptions.LongRunning
, TaskScheduler.Default);//Check for files on another thread
private void CheckFiles()
{
while (!cancelCheckFile.Token.IsCancellationRequested)
{
//do stuff
}
}
này luôn tạo ra một thread mới đối với tôi. Tuy nhiên sau nhiều cuộc thảo luận ngay cả khi nó được đánh dấu là LongRunning không đảm bảo rằng một chuỗi mới sẽ được tạo ra.
Trong quá khứ tôi đã làm một cái gì đó như thế này:
thQueueChecker = new Thread(new ThreadStart(CheckQueue));
thQueueChecker.IsBackground = true;
thQueueChecker.Name = "CheckQueues" + DateTime.Now.Ticks.ToString();
thQueueChecker.Start();
private void CheckQueue()
{
while (!ProgramEnding)
{
//do stuff
}
}
Bạn có khuyên tôi quay trở lại phương pháp này để đảm bảo một chủ đề mới được sử dụng?
'LongRunning' chỉ là gợi ý cho trình lên lịch - nếu bạn hoàn toàn phải luôn có Chủ đề mới, bạn sẽ phải tạo một chủ đề mới. –
Ưa thích thêm câu trả lời đó? – Jon
Cảm ơn bạn Jon :) –