public LongRunningWork LongRunning(Action <object> action, object state, string name) { if (_pool.TryDequeue(out var pooled) == false) { MemoryInformation.AssertNotAboutToRunOutOfMemory(); pooled = new PooledThread(this); var thread = new Thread(pooled.Run, PlatformDetails.Is32Bits ? 512 * Constants.Size.Kilobyte : 0) { Name = name, IsBackground = true, }; thread.Start(); } pooled.StartedAt = DateTime.UtcNow; return(pooled.SetWorkForThread(action, state, name)); }
public LongRunningWork LongRunning(Action <object> action, object state, string name) { if (_pool.TryDequeue(out var pooled) == false) { MemoryInformation.AssertNotAboutToRunOutOfMemory(_minimumFreeCommittedMemory); pooled = new PooledThread(this); var thread = new Thread(pooled.Run) { Name = name, IsBackground = true, }; thread.Start(); } pooled.StartedAt = DateTime.UtcNow; return(pooled.SetWorkForThread(action, state, name)); }