Asynchrone délégués vs Threads

Remplacement de Threads (pas de pool de threads Thread) avec Asynchrone Délégués (Rappels).

Mon Scénario: Spawn un Thread/del.beginInvoke() par Client.

Selon moi,

Raisons

  1. besoin pour la Notification, par Rappel /Appel délégué à nouveau dans le Rappel
  2. Éviter Fil les frais Généraux, les délégués utilisation de pool de threads thread)
  3. Passer des Arguments (Éviter de jeter de l'objet) et ont besoin de la valeur de retour de la méthode.

Corrigez-moi si les raisons ci-dessus sont fausses.

  1. Est toute autre raison?
  2. Ce scénario que j'avais exactement besoin de faire quelques trucs avec Asynchrone Délégués qui
    les threads ne peuvent pas?
    3.La Performance ?

Exemple

    public delegate void SendCallbackType();

    SendCallbackType senderdel= new SendCallbackType(SendData);

    public void StartSend() //This method Could be Called more than 700 times (Thread per Client)
    {
        senderdel.BeginInvoke(SendCallback,null);
                   //(or)
        Thread t = new Thread(new ThreadStart(ThreadSend));
        t.IsBackground = true;
        t.Start();
    }

  //Async Delegate
    void SendData()
    {
         string data = QueData.DeQueue();
         RaiseOnData(data); //Raise to event.
    }
    void SendCallback(IAsyncResult ar)
    {
        senderdel.BeginInvoke(SendCallback, null);
    }

 //Thread
  void ThreadSend()
  {
      while (true)
      {
         string data = QueData.DeQueue();
         RaiseOnData(data); //Raise to event.
      }
   }

À partir du dessus de l'option qui serait la meilleure. La Performance ?

OriginalL'auteur C-va | 2012-07-13