我在循環中創建線程,按照迭代創建一個線程。在這個線程中,我調用了一個從路徑數組中取得路徑的方法。當我一步一步地運行調試模式時,線程會從路徑數組中調用每個路徑的方法。但是當我正常運行它時,線程會調用具有意外路徑的方法。有些時候,它會使用相同的路徑2次,有時使用相同的路徑。線程for循環!意外的行爲?
代碼有什麼問題?我運行的代碼沒有線程它運行完美,但只有在線程的問題。
下面是代碼:
for (int i = 0; i < appConfigDataPath.Length; i++)
{
var handle = new EventWaitHandle(false, EventResetMode.ManualReset);
string serverPath = appConfigDataPath[i];
string serverName = appConfigDataName[i];
var threadSplit = new Thread(() =>
{
ScanProcess(serverPath, serverName);
handle.Set();
});
threadSplit.Start();
waitHandles[i] = handle;
}
你應該設置IsBackgroundThread屬性爲true。更重要的是,使用ThreadPool中的線程或使用並行任務來獲得更好的性能。 – 2011-03-01 05:53:06
這只是問題所在。我急於使用線程池或並行進行....我必須使用正常線程執行 – PawanS 2011-03-01 05:57:20
ScanProcess執行什麼操作?它使用數組嗎? – 2011-03-01 06:08:38