public void GenerateItems()
 {
   while (...)
   {
     YourData item = GenerateItem();
     queue.Produce(item);
   }
 }
Exemple #2
0
    private void Worker()
    {
        CancellationToken cancellation = cts.Token;

        while (!cancellation.WaitHandle.WaitOne(YOUR_POLLING_INTERVAL))
        {
            YourData item = GetData();
            queue.Enqueue(item);
        }
    }
 public Child(ProducerConsumeQueue<YourData> pdq)
 {
   Task.Factory.StartNew(
     () =>
     {
       while (true)
       {
         YourData item = pdq.Consume();
         try
         {
           ProcessItem(item);
         }
         catch
         {
           // Do something with exceptions here.
         }
       }
     ), TaskCreationOptions.LongRunning);
 }
 private void TreeViewUpdateTimer_Tick(object sender, EventArgs args)
 {
     // Update in batches of 100 (or whatever) so that the UI stays
     // responsive.
     treeView1.BeginUpdate();
     for (int i = 0; i < 100; i++)
     {
         YourData value = null;
         if (queue.TryDequeue(value) && value != null)
         {
             treeView1.Nodes[value.SubKeyName].Nodes.Add(value.Value, value.Value)
         }
         else
         {
             // We're done.
             TreeViewUpdateTimer.Enabled = false;
             break;
         }
     }
     treeView1.EndUpdate();
 }
 private void WorkerThread()
 {
     using (RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key))
     {
         foreach (string subkey_name in key.GetSubKeyNames())
         {
             using (RegistryKey subkey = key.OpenSubKey(subkey_name))
             {
                 foreach (string a in (string[])subkey.GetValue("Users", ""))
                 {
                     User u = new User(a);
                     usrs.addUser(new User(a));
                     wgs.addUserToWorkgroup(subkey_name, a);
                     usrs.AddWorkGroupToUser(subkey_name, a);
                     var data = new YourData();
                     data.SubKeyName = subkey_name;
                     data.Value      = a;
                     queue.Enqueue(data);
                 }
                 queue.Enqueue(null); // Indicate that queueing is done.
             }
         }
     }
 }
 private void ProcessItem(YourData item)
 {
   // Add logic to process each data item here.
 }