«task-parallel-library» etiketlenmiş sorular

Görev Paralel Kütüphanesi, .NET 4'ten bu yana .NET Framework'ün bir parçasıdır.

3
Geçerli SynchronizationContext, TaskScheduler olarak kullanılamaz
Ben kullanıyorum Görevler benim ViewModel sunucu aramaları çalıştıran uzun çalışmasına ve sonuçlar taraftaki geri sıralıyor edilir Dispatcherkullanarak TaskScheduler.FromSyncronizationContext(). Örneğin: var context = TaskScheduler.FromCurrentSynchronizationContext(); this.Message = "Loading..."; Task task = Task.Factory.StartNew(() => { ... }) .ContinueWith(x => this.Message = "Completed" , context); Uygulamayı çalıştırdığımda bu iyi çalışıyor. Ancak, NUnittestlerimi çalıştırdığımda Resharper, …

5
Kilitlenmeye neden olan zaman uyumsuz / bekleme örneği
C # 's async/ awaitanahtar sözcüklerini kullanarak eşzamansız programlama için bazı en iyi uygulamalarla karşılaştım (c # 5.0'da yeniyim). Verilen tavsiyelerden biri şöyleydi: Kararlılık: Senkronizasyon bağlamlarınızı bilin ... Bazı senkronizasyon bağlamları evresel olmayan ve tek iş parçacıklıdır. Bu, bağlamda belirli bir zamanda yalnızca bir iş biriminin yürütülebileceği anlamına gelir. Buna …

3
SemaphoreSlim'in kullanımını anlamanız gerekiyor
İşte sahip olduğum kod ama ne SemaphoreSlimyaptığını anlamıyorum . async Task WorkerMainAsync() { SemaphoreSlim ss = new SemaphoreSlim(10); List<Task> trackedTasks = new List<Task>(); while (DoMore()) { await ss.WaitAsync(); trackedTasks.Add(Task.Run(() => { DoPollingThenWorkAsync(); ss.Release(); })); } await Task.WhenAll(trackedTasks); } void DoPollingThenWorkAsync() { var msg = Poll(); if (msg != null) { …

3
Hiç bitmeyen bir görevi yerine getirmenin doğru yolu. (Zamanlayıcılar - Görev)
Bu nedenle, uygulamamın, uygulama çalıştığı veya iptal istendiği sürece neredeyse sürekli olarak (her çalıştırma arasında 10 saniyelik bir duraklama ile) bir eylem gerçekleştirmesi gerekiyor. Yapması gereken iş 30 saniyeye kadar sürebilmektedir. Bir System.Timers.Timer kullanmak ve önceki "onay" tamamlanmadan eylemi gerçekleştirmediğinden emin olmak için AutoReset kullanmak daha mı iyi? Veya LongRunning …

7
System.Threading.Timer için Görev tabanlı bir yedek var mı?
.Net 4.0 Görevleri konusunda yeniyim ve bir Zamanlayıcının, örneğin periyodik bir Görev gibi, Görev tabanlı bir değiştirme veya uygulama olacağını düşündüğüm şeyi bulamadım. Böyle bir şey var mı? Güncelleme İhtiyaçlarıma yönelik bir çözüm olduğunu düşündüğüm bir şey buldum, bu da "Zamanlayıcı" işlevselliğini tüm CancellationToken'dan yararlanarak bir Görev içinde alt Görevlerle …

7
PrevTask.Wait () 'in ContinueWith ile (Görevler kitaplığından) kullanılması önerilir mi?
Bu nedenle, geçenlerde .ContinueWith for Tasks'ımı nasıl kullandığımın onları kullanmanın doğru yolu olmadığı söylendi. Henüz internette bunun kanıtını bulamadım, bu yüzden sizlere soracağım ve cevabın ne olduğunu göreceğim. İşte .ContinueWith'i nasıl kullandığımın bir örneği: public Task DoSomething() { return Task.Factory.StartNew(() => { Console.WriteLine("Step 1"); }) .ContinueWith((prevTask) => { Console.WriteLine("Step 2"); …

7
Görev.Parametreler ile Çalıştırılsın mı?
Çok görevli bir ağ projesi üzerinde çalışıyorum ve bu konuda yeniyim Threading.Tasks. Basit bir uyguladım Task.Factory.StartNew()ve bunu nasıl yapabilirim acaba Task.Run()? İşte temel kod: Task.Factory.StartNew(new Action<object>( (x) => { // Do something with 'x' }), rawData); Ben içine baktım System.Threading.Tasks.Taskiçinde nesne tarayıcı ve bir bulamadık Action<T>gibi parametre. Sadece parametre Actionalır …

4
Eşzamansız BlockingCollection <T> gibi bir şey var mı?
Eşzamansız awaitolarak sonucunu istiyorum BlockingCollection&lt;T&gt;.Take(), bu yüzden iş parçacığını engellemiyorum. Bunun gibi bir şey arıyorum: var item = await blockingCollection.TakeAsync(); Bunu yapabileceğimi biliyorum: var item = await Task.Run(() =&gt; blockingCollection.Take()); ancak bu fikir tüm fikri öldürür, çünkü ThreadPoolbunun yerine başka bir iş parçacığı (of ) engellenir. Herhangi bir alternatif var …

6
Bir Görevde eşzamanlı sürekliliği nasıl engelleyebilirim?
Taskİsteklere yönelik bekleyen yanıtlar için tabanlı bir API sağlayan bazı kitaplık (soket ağı) kodum var TaskCompletionSource&lt;T&gt;. Bununla birlikte, eşzamanlı sürekliliği önlemenin imkansız görünmesi nedeniyle TPL'de bir sıkıntı var. Ne olur gibi yapabilmek için aşağıdakilerden biri geçerlidir: TaskCompletionSource&lt;T&gt;Arayanların bağlanmasına izin vermemesi gerektiğini söyleyin TaskContinuationOptions.ExecuteSynchronouslyveya sonucu ( SetResult/ TrySetResult) TaskContinuationOptions.ExecuteSynchronouslygöz ardı edilmesi …

2
Görev'de istisna yakalamanın en iyi yolu nedir?
İle System.Threading.Tasks.Task&lt;TResult&gt;atılabilecek istisnaları yönetmem gerekiyor. Bunu yapmanın en iyi yolunu arıyorum. Şimdiye kadar, çağrı içindeki tüm yakalanmamış istisnaları yöneten bir temel sınıf oluşturdum..ContinueWith(...) Bunu yapmanın daha iyi bir yolu olup olmadığını merak ediyorum. Ya da bunu yapmanın iyi bir yolu olsa bile. public class BaseClass { protected void ExecuteIfTaskIsNotFaulted&lt;T&gt;(Task&lt;T&gt; e, …

3
Neden Görev'in devamları.Ne zaman senkronize olarak yürütülür?
Task.WhenAll.NET Core 3.0'da çalışırken yöntemle ilgili meraklı bir gözlem yaptım . Basit bir Task.Delaygörevi tek bir argüman olarak Task.WhenAllgeçtim ve sarılmış görevin orijinal göreve aynı şekilde davranmasını bekledim. Ancak durum böyle değil. Orijinal görevin devamları eşzamansız olarak (istenir) Task.WhenAll(task)yürütülür ve çoklu sarmalayıcıların süreleri birbiri ardına eşzamanlı olarak yürütülür (bu istenmeyen …
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.