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

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

5
CancellationToken이 CancellationTokenSource와 다른 이유는 무엇입니까?
클래스 CancellationToken외에도 .NET 구조체가 도입 된 이유에 대한 근거를 찾고 CancellationTokenSource있습니다. API가 어떻게 사용되는지 이해 하지만 API가 왜 그렇게 설계 되었는지 이해하고 싶습니다 . 즉, 왜 우리는 : var cts = new CancellationTokenSource(); SomeCancellableOperation(cts.Token); ... public void SomeCancellableOperation(CancellationToken token) { ... token.ThrowIfCancellationRequested(); ... } 다음 CancellationTokenSource과 같이 직접 전달하는 대신 …

4
무효 반환과 작업 반환의 차이점은 무엇입니까?
다양한 C # 비동기 CTP 샘플을 보면 반환하는 일부 비동기 함수 void와 제네릭이 아닌 다른 함수를 반환 Task합니다. Task<MyType>비동기 작업이 완료되면 a를 반환하는 것이 호출자에게 데이터를 반환하는 데 유용한 이유를 알 수 있지만 반환 유형이있는 함수는 Task데이터를 반환하지 않습니다. 왜 돌아 오지 void않습니까?

5
여러 awaits보다 단일 'await Task.WhenAll'을 선호해야하는 이유는 무엇입니까?
작업 완료 순서에 신경 쓰지 않고 모두 완료해야하는 경우에도 await Task.WhenAll여러 개 대신 사용해야 await합니까? 예를 들어 DoWork2다음과 같은 선호하는 방법 이 있습니다 DoWork1. 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, …

5
완료된 작업 생성 <T>
메서드를 구현하고 Task&lt;Result&gt; StartSomeTask()있으며 메서드가 호출되기 전에 이미 결과를 알고 있습니다. 이미 완료된 Task &lt;T&gt; 를 어떻게 만듭니 까? 이것이 내가 현재하고있는 일입니다. 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; } 더 나은 해결책이 있습니까?

3
TPL Task 객체에서 Dispose ()를 호출하지 않는 것이 허용됩니까?
백그라운드 스레드에서 실행되도록 작업을 트리거하고 싶습니다. 작업 완료를 기다리고 싶지 않습니다. .net 3.5에서는이 작업을 수행했을 것입니다. ThreadPool.QueueUserWorkItem(d =&gt; { DoSomething(); }); .net 4에서는 TPL이 권장되는 방법입니다. 내가 본 일반적인 패턴은 다음과 같습니다. Task.Factory.StartNew(() =&gt; { DoSomething(); }); 그러나, StartNew()방법은 반환 Task되는 구현 객체 IDisposable. 이 패턴을 추천하는 사람들은 이것을 간과하는 …


3
MVC5에서 비동기를 사용하면 어떤 이점이 있습니까?
차이점은 무엇입니까? 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); } 과: [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task&lt;ActionResult&gt; Login(LoginViewModel model, string returnUrl) { if (ModelState.IsValid) { IdentityResult result …

7
브라우저가 요청을 취소 할 때 ASP.NET Web API OperationCanceledException
사용자가 페이지를로드하면 ASP.NET Web API 2 컨트롤러에 도달하는 하나 이상의 ajax 요청이 생성됩니다. 사용자가 다른 페이지로 이동하면 이러한 ajax 요청이 완료되기 전에 브라우저에서 요청을 취소합니다. 그런 다음 ELMAH HttpModule은 취소 된 각 요청에 대해 두 가지 오류를 기록합니다. 오류 1 : System.Threading.Tasks.TaskCanceledException: A task was canceled. at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at …

2
await와 ContinueWith의 차이점
다음 예에서 누군가 await와 ContinueWith동의어인지 아닌지 설명 할 수 있습니까 ? 나는 처음으로 TPL을 사용하려고 노력하고 있으며 모든 문서를 읽었지만 차이점을 이해하지 못합니다. 기다립니다 : String webText = await getWebPage(uri); await parseData(webText); ContinueWith : 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(); 특정 …

6
두 개의 비동기 작업을 병렬로 실행하고 .NET 4.5에서 결과 수집
.NET 4.5로 작업하는 것이 간단하다고 생각한 것을 얻으려고 잠시 노력해 왔습니다. 두 개의 장기 실행 작업을 동시에 시작하고 최상의 C # 4.5 (RTM) 방식으로 결과를 수집하고 싶습니다. 다음은 작동하지만 나는 그것을 좋아하지 않습니다. 다른 방법을 Sleep사용할 수 있도록 비동기 메서드가 되고 싶습니다.await 그냥 서투르게 보입니다. Task.Run() 나는 이것이 새로운 언어 …

13
동시 비동기 I / O 작업의 양을 제한하는 방법은 무엇입니까?
// let's say there is a list of 1000+ URLs string[] urls = { "http://google.com", "http://yahoo.com", ... }; // now let's send HTTP requests to each of these URLs in parallel urls.AsParallel().ForAll(async (url) =&gt; { var client = new HttpClient(); var html = await client.GetStringAsync(url); }); 여기에 문제가 있습니다. 1000 …

5
이 비동기 작업이 중단되는 이유는 무엇입니까?
나는 새로운 'C #을 사용하는 방법을 요구하는 다중 계층 닷넷 4.5 응용 프로그램이 async및 await키워드 바로 중단한다는하고 그 이유를 볼 수 없습니다. 맨 아래에는 데이터베이스 유틸리티 OurDBConn(기본적으로 기본 DBConnection및 DBCommand개체에 대한 래퍼)를 확장하는 비동기 메서드가 있습니다 . public static async Task&lt;T&gt; ExecuteAsync&lt;T&gt;(this OurDBConn dataSource, Func&lt;OurDBConn, T&gt; function) { string connectionString …

3
Task의 예외는 Task에서 Waiting 또는 Exception 속성에 액세스하여 관찰되지 않았습니다. 결과적으로 관찰되지 않은 예외는
이것은 무엇을 의미하며 어떻게 해결합니까? TPL 작업을 사용하고 있습니다. 전체 오류 Task의 예외는 Task에서 Waiting 또는 Exception 속성에 액세스하여 관찰되지 않았습니다. 결과적으로 관찰되지 않은 예외가 종료 자 스레드에 의해 다시 발생했습니다. System.Threading.Tasks.TaskExceptionHolder.Finalize ()에서 mscorlib


3
현재 SynchronizationContext를 TaskScheduler로 사용할 수 없습니다.
내가 사용하고 작업을 내 뷰 모델에서 서버 호출을 실행 긴 실행하고 결과를 다시 정렬 화되어 Dispatcher사용하여 TaskScheduler.FromSyncronizationContext(). 예를 들면 : var context = TaskScheduler.FromCurrentSynchronizationContext(); this.Message = "Loading..."; Task task = Task.Factory.StartNew(() =&gt; { ... }) .ContinueWith(x =&gt; this.Message = "Completed" , context); 이것은 응용 프로그램을 실행할 때 잘 작동합니다. 하지만 …

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