Task Parallel Library fa parte di .NET Framework da .NET 4. È un insieme di API per consentire agli sviluppatori di programmare applicazioni asincrone.
Alcuni System.Threading.Tasks.Taskcostruttori prendono a CancellationTokencome parametro: CancellationTokenSource source = new CancellationTokenSource(); Task t = new Task (/* method */, source.Token); Ciò che mi sorprende di questo è che non c'è modo dall'interno del corpo del metodo di ottenere effettivamente il token passato (ad esempio, niente di simile Task.CurrentTask.CancellationToken). Il token …
Forse mi manca qualcosa, ma qual è la differenza tra fare: public void MyMethod() { Task t = Task.Factory.StartNew(DoSomethingThatTakesTime); t.Wait(); UpdateLabelToSayItsComplete(); } public async void MyMethod() { var result = Task.Factory.StartNew(DoSomethingThatTakesTime); await result; UpdateLabelToSayItsComplete(); } private void DoSomethingThatTakesTime() { Thread.Sleep(10000); }
AFAIK, tutto ciò che sa è che ad un certo punto, il suo SetResulto SetExceptionmetodo viene chiamato per completare l' Task<T>esposizione attraverso la sua Taskproprietà. In altre parole, funge da produttore per Task<TResult>ae il suo completamento. Ho visto qui l'esempio: Se ho bisogno di un modo per eseguire un Func …
Ero entusiasta di vedere il nuovo System.Collections.Concurrentspazio dei nomi in .Net 4.0, abbastanza bello! Ho visto ConcurrentDictionary, ConcurrentQueue, ConcurrentStack, ConcurrentBage BlockingCollection. Una cosa che sembra misteriosamente mancante è a ConcurrentList<T>. Devo scriverlo da solo (o toglierlo dal web :))? Mi sto perdendo qualcosa di ovvio qui?
Voglio creare un completato Task(noTask<T> ). C'è qualcosa incorporato in .NET per fare questo? Una domanda correlata: creare un'attività completata <T>
Non capisco bene la differenza tra Task.Waite await. Ho qualcosa di simile alle seguenti funzioni in un servizio WebAPI ASP.NET: public class TestController : ApiController { public static async Task<string> Foo() { await Task.Delay(1).ConfigureAwait(false); return ""; } public async static Task<string> Bar() { return await Foo(); } public async static …
Ho un metodo: private static void Method() { Console.WriteLine("Method() started"); for (var i = 0; i < 20; i++) { Console.WriteLine("Method() Counter = " + i); Thread.Sleep(500); } Console.WriteLine("Method() finished"); } E voglio iniziare questo metodo in una nuova attività. Posso iniziare una nuova attività in questo modo var task …
Funziona bene quando hanno una o due attività, tuttavia genera un errore "Un'attività è stata annullata" quando abbiamo elencato più di un'attività. List<Task> allTasks = new List<Task>(); allTasks.Add(....); allTasks.Add(....); Task.WaitAll(allTasks.ToArray(), configuration.CancellationToken); private static Task<T> HttpClientSendAsync<T>(string url, object data, HttpMethod method, string contentType, CancellationToken token) { HttpRequestMessage httpRequestMessage = new HttpRequestMessage(method, …
In C # e TPL ( Task Parallel Library ), la Taskclasse rappresenta un lavoro in corso che produce un valore di tipo T. Vorrei sapere qual è la necessità del metodo Task.FromResult ? Cioè: in uno scenario in cui hai già il valore prodotto a portata di mano, qual …
In un'app della metropolitana, devo eseguire una serie di chiamate WCF. Vi è un numero significativo di chiamate da effettuare, quindi devo eseguirle in un ciclo parallelo. Il problema è che il ciclo parallelo termina prima che le chiamate WCF siano tutte complete. Come rifatteresti questo per funzionare come previsto? …
Sto giocando con queste attività di Windows 8 WinRT e sto cercando di annullare un'attività utilizzando il metodo seguente e funziona fino a un certo punto. Viene chiamato il metodo CancelNotification, che ti fa pensare che l'attività sia stata annullata, ma in background l'attività continua a funzionare, quindi dopo che …
La classe CancellationTokenSourceè usa e getta. Una rapida occhiata in Reflector dimostra l'utilizzo di KernelEventuna (molto probabilmente) risorsa non gestita. Poiché CancellationTokenSourcenon ha un finalizzatore, se non lo eliminiamo, il GC non lo farà. D'altra parte, se si esaminano gli esempi elencati nell'articolo MSDN Cancellazione nei thread gestiti , solo …
Negli ultimi giorni ho testato le nuove funzionalità di .net 4.5 ec # 5. Mi piacciono le sue nuove funzionalità asincrone / attendono. In precedenza avevo usato BackgroundWorker per gestire processi più lunghi in background con un'interfaccia utente reattiva. La mia domanda è: dopo avere queste nuove e belle funzionalità, …
Ho appena visto 3 routine relative all'uso di TPL che fanno lo stesso lavoro; ecco il codice: public static void Main() { Thread.CurrentThread.Name = "Main"; // Create a task and supply a user delegate by using a lambda expression. Task taskA = new Task( () => Console.WriteLine("Hello from taskA.")); // …
Vorrei gestire una raccolta in parallelo, ma ho difficoltà a implementarla e spero quindi in un aiuto. Il problema sorge se voglio chiamare un metodo contrassegnato come asincrono in C #, all'interno della lambda del ciclo parallelo. Per esempio: var bag = new ConcurrentBag<object>(); Parallel.ForEach(myCollection, async item => { // …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.