我在循环中创建线程,按照迭代创建一个线程。在这个线程中,我调用了一个从路径数组中取得路径的方法。当我一步一步地运行调试模式时,线程会从路径数组中调用每个路径的方法。但是当我正常运行它时,线程会调用具有意外路径的方法。有些时候,它会使用相同的路径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