«task-parallel-library» etiketlenmiş sorular

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

5
CancellationToken, CancellationTokenSource'tan neden ayrı?
Sınıfa CancellationTokenek olarak .NET struct'ın neden tanıtıldığına dair bir mantık arıyorum CancellationTokenSource. Anlıyorum nasıl API kullanılacaksa, aynı zamanda anlamak istiyorum neden o şekilde olduğunu tasarlanmıştır. Yani, neden elimizde: var cts = new CancellationTokenSource(); SomeCancellableOperation(cts.Token); ... public void SomeCancellableOperation(CancellationToken token) { ... token.ThrowIfCancellationRequested(); ... } doğrudan CancellationTokenSourceetrafta dolaşmak yerine : var …

4
Geçersizliği iade etmek ile bir Görevi iade etmek arasındaki fark nedir?
Çeşitli C # Async CTP örneklerine baktığımda, dönen bazı eşzamansız işlevler voidve genel olmayan döndüren diğerleri görüyorum Task. Zaman Task<MyType>uyumsuz işlem tamamlandığında arayan kişiye veri döndürmek için a döndürmenin neden yararlı olduğunu anlayabiliyorum , ancak gördüğüm işlevler Taskhiçbir zaman veri döndürmüyor. Neden geri dönmüyorsun void?

5
Birden çok beklemeden ziyade neden tek 'await Task.WhenAll' tercih etmeliyim?
Görevin tamamlanma sırasını önemsemiyorsam ve sadece tamamının tamamlanmasına ihtiyacım olursa await Task.WhenAll, çoklu yerine yine de kullanmalı awaitmıyım? örneğin, DoWork2aşağıdaki DoWork1(ve neden?) using System; using System.Threading.Tasks; namespace ConsoleApp { class Program { static async Task<string> DoTaskAsync(string name, int timeout) { var start = DateTime.Now; Console.WriteLine("Enter {0}, {1}", name, timeout); await …

5
Tamamlanmış bir Görev Oluştur <T>
Bir yöntem uyguluyorum Task&lt;Result&gt; StartSomeTask()ve sonucu, yöntem çağrılmadan önce zaten biliyorum. Zaten tamamlanmış bir Görev &lt;T&gt; nasıl oluşturabilirim ? Şu anda yaptığım şey bu: private readonly Result theResult = new Result(); public override Task&lt;Result&gt; StartSomeTask() { var task = new Task&lt;Result&gt;(() =&gt; theResult); task.RunSynchronously(CurrentThreadTaskScheduler.CurrentThread); return task; } Daha iyi bir …

3
Bir TPL Task nesnesinde Dispose () 'u çağırmamak kabul edilebilir mi?
Arka planda çalışacak bir görevi tetiklemek istiyorum. Görevlerin tamamlanmasını beklemek istemiyorum. .Net 3.5'te bunu yapardım: ThreadPool.QueueUserWorkItem(d =&gt; { DoSomething(); }); .Net 4'te TPL önerilen yoldur. Tavsiye ettiğim yaygın model şudur: Task.Factory.StartNew(() =&gt; { DoSomething(); }); Bununla birlikte, StartNew()yöntem , Taskuygulayan bir nesne döndürür IDisposable. Bu, bu modeli öneren kişiler tarafından …

2
Parallel.ForEach tamamlanana kadar nasıl bekleyebilirim
Mevcut projemde TPL kullanıyorum ve birçok iş parçacığını döndürmek için Parallel.Foreach kullanıyorum. Task sınıfı, görev tamamlanana kadar beklemek için Wait () içerir. Bunun gibi, Parallel.ForEach'in tamamlanmasını ve ardından sonraki ifadeleri yürütmesini nasıl bekleyebilirim?

3
MVC5 ile eşzamansız kullanmanın avantajı nedir?
Arasındaki fark nedir: public ActionResult Login(LoginViewModel model, string returnUrl) { if (ModelState.IsValid) { IdentityResult result = IdentityManager.Authentication.CheckPasswordAndSignIn(AuthenticationManager, model.UserName, model.Password, model.RememberMe); if (result.Success) { return Redirect("~/home"); } else { AddErrors(result); } } return View(model); } ve: [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task&lt;ActionResult&gt; Login(LoginViewModel model, string returnUrl) { if (ModelState.IsValid) { IdentityResult …

7
Tarayıcı isteği iptal ettiğinde ASP.NET Web API OperationCanceledException
Bir kullanıcı bir sayfa yüklediğinde, ASP.NET Web API 2 denetleyicilerini vuran bir veya daha fazla ajax isteği yapar. Kullanıcı başka bir sayfaya giderse, bu ajax talepleri tamamlanmadan önce, istekler tarayıcı tarafından iptal edilir. ELMAH HttpModülümüz daha sonra iptal edilen her istek için iki hata kaydeder: Hata 1: System.Threading.Tasks.TaskCanceledException: A task …

2
Await ve ContinueWith arasındaki fark
Eğer birisi açıklayabilir awaitve ContinueWithaşağıdaki örnekte eşanlamlı veya değildirler. TPL'yi ilk kez kullanmaya çalışıyorum ve tüm belgeleri okudum, ancak farkı anlamıyorum. Bekleyin : String webText = await getWebPage(uri); await parseData(webText); Devam Et : Task&lt;String&gt; webText = new Task&lt;String&gt;(() =&gt; getWebPage(uri)); Task continue = webText.ContinueWith((task) =&gt; parseData(task.Result)); webText.Start(); continue.Wait(); Belirli durumlarda …

6
İki eşzamansız görevi paralel olarak çalıştırın ve sonuçları .NET 4.5'te toplayın
Bir süredir .NET 4.5 ile çalışmanın basit olacağını düşündüğüm bir şeyi elde etmeye çalışıyorum. İki uzun süreli görevi aynı anda başlatmak ve sonuçları en iyi C # 4.5 (RTM) yöntemiyle toplamak istiyorum. Aşağıdakiler çalışıyor ama hoşuma gitmiyor çünkü: Zaman Sleepuyumsuz bir yöntem olmak istiyorum , böylece awaitdiğer yöntemler olabilir Sadece …



5
Bu eşzamansız eylem neden askıda kalıyor?
Çok katmanlı bir .Net 4.5 uygulamam var asyncve C # 'ın yeni ve awaitkilitlenen anahtar sözcüklerini kullanarak bir yöntemi çağırıyor ve nedenini göremiyorum. En altta, veritabanı yardımcı programımızı genişleten bir zaman uyumsuz yöntemim var OurDBConn(temelde temel DBConnectionve DBCommandnesneler için bir sarmalayıcı ): public static async Task&lt;T&gt; ExecuteAsync&lt;T&gt;(this OurDBConn dataSource, Func&lt;OurDBConn, …

3
Bir Görevin istisnaları, Görevi Bekleyerek veya İstisna özelliğine erişerek gözlemlenmedi. Sonuç olarak, gözlenmeyen istisna
Bu ne anlama geliyor ve nasıl çözülür? TPL görevlerini kullanıyorum. Bütün hata Bir Görevin istisnaları, Görevi Bekleyerek veya İstisna özelliğine erişerek gözlemlenmedi. Sonuç olarak, gözlemlenmeyen istisna, sonlandırıcı iş parçacığı tarafından yeniden ortaya çıktı. System.Threading.Tasks.TaskExceptionHolder.Finalize () mscorlib

6
CancellationToken için varsayılan parametre
A eklemek istediğim bazı eşzamansız kodum var CancellationToken. Bununla birlikte, buna ihtiyaç duyulmayan birçok uygulama var, bu yüzden varsayılan bir parametreye sahip olmak istiyorum - belki CancellationToken.None. Ancak, Task&lt;x&gt; DoStuff(...., CancellationToken ct = null) verim 'System.Threading.CancellationToken' türüne yönelik standart bir dönüşüm olmadığından '' türündeki bir değer varsayılan parametre olarak kullanılamaz …

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.