private void StartThreadedNameUpdate()
{
if( currentThreadCount > 0 ) return;
int maxThreads = 1;
Queue<UpdateJob> q = new Queue<UpdateJob>();
for( int i = 0; i < lstUsers.Items.Count; i++ ) {
UserRecord r = lstUsers.Items[i] as UserRecord;
if( r != null ) {
q.Enqueue( new UpdateJob( i, r.DirName ) );
}
}
int threads = ( maxThreads > q.Count ) ? maxThreads : q.Count;
if( threads > 0 ) {
currentThreadLock = new ThreadLocker();
SetUpdateInterfaceRunning();
for( int i = 0; i < threads; i++ ) {
Thread t = new Thread( this.NameUpdateThread );
currentThreadCount++;
t.Start( new UpdateData( q, currentThreadLock ) );
}
}
}