Domanda

chiedevo se qualcuno potesse chiarire l'uso di BeginInvoke su un'istanza di qualche delegato quando si desidera effettuare più chiamate asincrone dal momento che la documentazione MSDN in realtà non copertura / parlare di questo a tutti.

Quello che voglio fare è qualcosa di simile al seguente:

MyDelegate d = new MyDelegate(this.TargetMethod);
List<IAsyncResult> results = new List<IAsyncResult>();

//Start multiple asynchronous calls
for (int i = 0; i < 4; i++)
{
   results.Add(d.BeginInvoke(someParams, null, null));
}

//Wait for all my calls to finish
WaitHandle.WaitAll(results.Select(r => r.AsyncWaitHandle).ToArray());

//Process the Results

La domanda è: posso fare questo con un'istanza del delegato o devo un'istanza del delegato per ogni singola chiamata?

Dato che EndInvoke() prende un IAsyncResult come parametro Parto dal presupposto che il primo è corretto, ma non riesco a vedere nulla nella documentazione per indicare in entrambi i casi.

È stato utile?

Soluzione

Sì, nessun problema. Otterrete una diversa IAsyncResult per ogni chiamata a BeginInvoke (). Non c'è nessuno stato associato al thread iniziato nell'oggetto delegato stesso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top