Articles of task parallel library

Ottenere il nome del metodo di un’attività

Sto cercando di ottenere il nome metodo / azione da un’attività in C #. Nello specifico, sto implementando un programma di pianificazione delle attività personalizzato e vorrei generare statistiche sulla durata dell’esecuzione di un’attività, che verrà quindi aggregata in base al metodo eseguito all’interno dell’attività. Nel debugger di Visual Studio è ansible accedere a questo […]

TaskEx.Yield (TaskScheduler)

Il mese scorso ho posto la seguente domanda che ha portato all’apprendimento di TaskEx.Yield : I metodi asincroni possono avere un codice costoso prima della “attesa”? Tuttavia, da allora mi sono reso conto che questo metodo in realtà invia tutto il codice successivo al TaskScheduler ambientale. Nel vero spirito DI, il nostro team ha accettato […]

Qual è la differenza tra queste due funzioni usando async / await / TPL?

Penso di essermi confuso con successo per la giornata. public void DoSomething1() { Task.Delay(1000); } public async void DoSomething2() { await Task.Delay(1000); } Qual è la differenza tra queste due funzioni in termini di ciò che accade al loro interno quando vengono chiamate? Qual è lo scopo dell’utilizzo di un metodo async che non restituisce […]

Come posso organizzare il controllo del stream nei flussi di dati TPL?

Sto cercando di capire come controllare il stream di dati in TPL Dataflow. Ho un produttore molto veloce e un consumatore molto lento. (Il mio vero codice è più complesso, ma nondimeno, questo è un modello piuttosto buono e riproduce il problema.) Quando lo eseguo, il codice inizia a bere memoria come se fosse fuori […]

Perché TaskFactory.StartNew riceve un CancellationToken

Possibile duplicato: Token di cancellazione in Costruttore di compiti: perché? Questo metodo riceve un CancellationToken: CancellationTokenSource cts = new CancellationTokenSource(4); var t = Task.Factory.StartNew(() => { // code }, cts.Token); Poiché la cancellazione è cooperativa (il codice di lavoro effettivo deve osservare il token di cancellazione), qual è lo scopo di passare questo al metodo […]

Evento di attività o azione sul token di cancellazione richiesto

Questo è il mio codice: public sealed class ProcessingTask : ProcessingObject { private CancellationTokenSource _cancelToken; private int _timeOut = 10000; public int ProcessObjectID { get; private set; } public Task ProcessObjectTask { get; private set; } public QueueObject queueObject { private get; set; } public ProcessingTask(int processObjectID, Uri url) : base(url) { this.ProcessObjectID = processObjectID; […]

Forza operazione Annulla con API che potrebbe bloccarsi

Attualmente sto lavorando con una porta seriale, e l’API che uso si fermerà alcune volte su una lettura, anche quando è impostato il suo timeout. Questo non è un grosso problema, ma ho bisogno di fare un po ‘di lavoro quando ciò accade e il thread sospeso deve essere arrestato. L’ho provato con quanto segue, […]

Volatile IEnlistmentNotification and TransactionScope.AsyncFlowEnabled = true

Oltre a .NET 4.5.1 è disponibile una nuova opzione su TransactionScope che consente di utilizzare il stream asincrono. Questo permette di scrivere il seguente codice cliente using(var txt = new TransactionScope(…, TransactionScopeAsyncFlowOption.Enabled) { await sender.SendAsync(); } Fin qui tutto bene. Ma quando ho bisogno di implementare una IEnlistmentNotification volatile, sto lottando per farlo. Immaginiamo il […]

Come ottenere “vera” asincronia

Nella sua risposta a questa domanda , Stephen Cleary si riferisce all’asincronia “falsa” e all’asincronia “vera”. c’è un modo molto più semplice per pianificare il lavoro nel pool di thread: Task.Run. La vera asincronia non è ansible, perché hai un metodo di blocco che devi usare. Quindi, tutto ciò che puoi fare è una soluzione […]

TPL Dataflow, alternativa ai limiti JoinBlock?

Cerco un’alternativa a JoinBlock che può essere collegata a n-TransformBlocks e unire / unire messaggi di tutti i blocchi sorgente di TransformBlock insieme per passare una raccolta di tali dati su un altro blocco di stream di dati. JoinBlock funziona bene ma è limitato a colbind fino a 3 blocchi sorgente. Soffre anche di un […]