«task-parallel-library» 태그된 질문

Task Parallel Library는 .NET 4 이후 .NET Framework의 일부입니다. 개발자가 비동기 응용 프로그램을 프로그래밍 할 수 있도록하는 API 세트입니다.

4
작업 생성자의 취소 토큰 : 왜?
특정 System.Threading.Tasks.Task생성자 CancellationToken는 매개 변수로 사용합니다. CancellationTokenSource source = new CancellationTokenSource(); Task t = new Task (/* method */, source.Token); 이것에 대해 나를 당황스럽게하는 것은 메소드 본문 내부 에서 전달 된 토큰을 실제로 얻을 수있는 방법 이 없다는 것 입니다 (예 :) Task.CurrentTask.CancellationToken. 토큰은 상태 객체와 같은 다른 메커니즘을 통해 …

6
Task.Start / Wait와 Async / Await의 차이점은 무엇입니까?
뭔가 빠졌을 수도 있지만 차이점은 무엇입니까? 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); }

11
언제 TaskCompletionSource <T>를 사용해야합니까?
AFAIK는 모든 시점에서 속성을 통해 노출 을 완료하기 위해 해당 메서드 SetResult또는 SetException메서드가 호출 된다는 것을 알고 있습니다.Task&lt;T&gt;Task 다시 말해, 그것은 a Task&lt;TResult&gt;와 완성을 위한 생산자 역할을합니다 . 여기 예제를 보았습니다 . Func를 비동기 적으로 실행할 수있는 방법이 필요하고 해당 작업을 나타내는 작업이있는 경우. public static Task&lt;T&gt; RunAsync&lt;T&gt;(Func&lt;T&gt; function) { …

11
.Net 4.0에 ConcurrentList <T>가 없습니까?
System.Collections.Concurrent.Net 4.0에서 새로운 네임 스페이스 를 보게되어 매우 기뻤습니다 . 내가 본 것 ConcurrentDictionary, ConcurrentQueue, ConcurrentStack, ConcurrentBag와 BlockingCollection. 의문의 여지없이 누락 된 것 중 하나는 ConcurrentList&lt;T&gt;입니다. 직접 작성해야합니까 (또는 웹에서 가져와야합니까)? 여기에 명백한 것이 빠져 있습니까?


3
기다리다 Task.Wait-교착 상태?
꽤 차이 이해가 안 Task.Wait와 await. ASP.NET WebAPI 서비스에 다음 기능과 비슷한 것이 있습니다. public class TestController : ApiController { public static async Task&lt;string&gt; Foo() { await Task.Delay(1).ConfigureAwait(false); return ""; } public async static Task&lt;string&gt; Bar() { return await Foo(); } public async static Task&lt;string&gt; Ros() { return await Bar(); …

6
HttpClient-작업이 취소 되었습니까?
하나 또는 두 개의 작업이있는 경우에는 제대로 작동하지만 둘 이상의 작업이 있으면 "작업이 취소되었습니다"라는 오류가 발생합니다. List&lt;Task&gt; allTasks = new List&lt;Task&gt;(); allTasks.Add(....); allTasks.Add(....); Task.WaitAll(allTasks.ToArray(), configuration.CancellationToken); private static Task&lt;T&gt; HttpClientSendAsync&lt;T&gt;(string url, object data, HttpMethod method, string contentType, CancellationToken token) { HttpRequestMessage httpRequestMessage = new HttpRequestMessage(method, url); HttpClient httpClient = new HttpClient(); …

7
Task.Run ()과 Task.Factory.StartNew ()의 차이점은 무엇입니까?
나는 방법을 가지고있다 : private static void Method() { Console.WriteLine("Method() started"); for (var i = 0; i &lt; 20; i++) { Console.WriteLine("Method() Counter = " + i); Thread.Sleep(500); } Console.WriteLine("Method() finished"); } 그리고이 작업을 새로운 작업에서 시작하고 싶습니다. 이 같은 새로운 작업을 시작할 수 있습니다 var task = Task.Factory.StartNew(new Action(Method)); …

6
C #에서 Task.FromResult <TResult> 사용은 무엇입니까
C # 및 TPL ( Task Parallel Library )에서 Task클래스는 T 유형의 값을 생성하는 진행중인 작업을 나타냅니다. Task.FromResult 메서드에 무엇이 필요한지 알고 싶습니다 . 즉, 이미 생산 된 가치를 가지고있는 시나리오에서이를 다시 작업으로 랩핑해야합니까? 염두에 두어야 할 것은 Task 인스턴스를 허용하는 다른 메소드의 일부 어댑터로 사용된다는 것입니다.

9
병렬로 중첩이 대기합니다.
메트로 앱에서는 여러 WCF 호출을 실행해야합니다. 많은 호출이 이루어져야하므로 병렬 루프에서 호출해야합니다. 문제는 WCF 호출이 모두 완료되기 전에 병렬 루프가 종료된다는 것입니다. 예상대로 작동하도록 이것을 리팩토링 하시겠습니까? var ids = new List&lt;string&gt;() { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }; var customers = new System.Collections.Concurrent.BlockingCollection&lt;Customer&gt;(); Parallel.ForEach(ids, …

4
대기중인 작업을 취소하는 방법?
이 Windows 8 WinRT 작업을하고 있는데 아래 방법을 사용하여 작업을 취소하려고하는데 어느 정도 작동합니다. CancelNotification 메소드가 호출되어 작업이 취소되었다고 생각하지만 백그라운드에서 작업이 계속 실행되고 완료된 후에는 작업 상태가 항상 완료되고 절대 취소되지 않습니다. 작업이 취소 될 때 작업을 완전히 중단 할 수있는 방법이 있습니까? private async void TryTask() { CancellationTokenSource …

7
CancellationTokenSource를 언제 처분해야합니까?
수업 CancellationTokenSource은 일회용입니다. Reflector를 간략히 살펴보면 KernelEvent관리되지 않는 리소스 인 (아마도) 사용이 증명됩니다 . 종료자가 CancellationTokenSource없으므로 처리하지 않으면 GC가 처리하지 않습니다. 반면에 MSDN 기사 Managed Threads에서 Cancellation에 나열된 샘플을 보면 하나의 코드 스 니펫 만 토큰을 처리합니다. 코드로 처리하는 올바른 방법은 무엇입니까? using기다리지 않으면 병렬 작업을 시작하는 코드를 래핑 할 …

4
비동기 / 대기 대 BackgroundWorker
지난 며칠 동안 .net 4.5 및 c # 5의 새로운 기능을 테스트했습니다. 새로운 비동기 / 대기 기능이 마음에 듭니다. 이전 에는 반응 형 UI로 백그라운드에서 더 긴 프로세스를 처리하기 위해 BackgroundWorker 를 사용했습니다 . 내 질문은 :이 멋진 새로운 기능을 가지고 나면 언제 async / await를 사용해야하고 BackgroundWorker를 사용해야 합니까? …

2
Task.Start (), Task.Run () 및 Task.Factory.StartNew () 사용에 대해
동일한 작업을 수행하는 TPL 사용에 관한 3 가지 루틴을 보았습니다. 코드는 다음과 같습니다. 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( () =&gt; Console.WriteLine("Hello from taskA.")); // Start the task. taskA.Start(); …

5
비동기 람다가있는 병렬 foreach
컬렉션을 병렬로 처리하고 싶지만 구현하는 데 문제가있어서 도움이 필요합니다. 병렬 루프의 람다 내에서 C #에서 비동기로 표시된 메소드를 호출하려는 경우 문제가 발생합니다. 예를 들면 다음과 같습니다. var bag = new ConcurrentBag&lt;object&gt;(); Parallel.ForEach(myCollection, async item =&gt; { // some pre stuff var response = await GetData(item); bag.Add(response); // some post stuff …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.