從我能告訴我有誤導的信息位。我需要在後臺運行一個單獨的線程。如何保證使用Task.StartNew方法時創建的新線程
目前,我不喜歡這樣寫道:
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
}
}
這始終是我創建了一個新的線程。但是,經過多次討論後,即使它被標記爲LongRunning也不能保證會創建新的線程。
在過去,我已經做了這樣的事情:
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
}
}
你會建議我回去這種方法,以保證新的線程使用?
'LongRunning'只是調度程序的一個提示 - 如果你絕對必須總是有一個新的線程,你將不得不創建一個。 –
花哨添加作爲答案? – Jon
謝謝喬恩:) –