protected override void ExecuteCore() { ClientState.Current.Messages.Errors.Clear(); if (ChannelsManager.Channels.Count == 0) { return; } var channels = ListOrSingle <ChannelInstance> .Get(channel, ChannelsManager.Channels); var gate = new ConcurrencyGate(2); foreach (var channelInstance in channels.Where(c => !c.Configuration.IsConnected)) { var inputChannel = channelInstance.InputChannel; var config = channelInstance.Configuration; var foldersTask = new ReceiveFoldersTask(channelInstance.Configuration, inputChannel.Clone()); foldersTask.FinishedSuccess += ((sender, e) => ReceiveFoldersTask_FinishedSuccess((ReceiveFoldersTask)sender, config, inputChannel)); gate.Add(foldersTask); } // Wait for all receive tasks to complete, keeping the queue filled for the ReceiveTask. // This prevents any new receive task from getting enqueued. gate.Execute(); // Clean up connection scavangers ConnectionPoolScavenger.Shutdown(); GC.Collect(GC.MaxGeneration); }
void MainForm_FormClosing(object sender, FormClosingEventArgs e) { ConnectionPoolScavenger.Shutdown(); }
public static void Connections() { ConnectionPoolScavenger.Shutdown(); }