I. 서론
태스크 클래스는 일반적으로 비동기 방식으로 수행되고, 비동기 모드는 .NET 프레임 워크 4에 개체 작업의 작업을 기반으로합니다.
위임 인스턴스화
사용하여 시스템; 사용 System.Collections.Generic 단계; 사용 을 System.Linq 단계; 사용 System.Text 단계; 사용 하여 System.Threading 단계; 사용 System.Threading.Tasks 단계; 스페이스 MyTask { 클래스 프로그램 { 정적 무효 메인 ( 문자열 []에 args) { 조 < 목적 > 동작 = ( 오브젝트 OBJ) => { Thread.sleep를 ( 1000 ); Console.WriteLine ( " OBJ : {0} ",의 Obj); }; 작업 T1 = 새 새 작업 (액션, " 인수 작업 " ); t1.Start (); Console.ReadKey (); } } }
작업을 수행 할 수있는 시작 () 메소드를 호출하여 인스턴스화 호출 태스크 T1 클래스 생성자에 의해 상기 태스크의 예는, 가변의 개체 유형을 수용 할 수 있도록이 작용 액션 <object>라는 대리자를 행한다.
III. 만들기 및 실행 작업
작업은 다른 방법으로 인스턴스를 만들 수 있습니다, 우리의 가장 일반적으로 사용되는 방법은 정적 메소드 실행을 호출하는 것입니다, 실행 방법은 작업을 시작하는 간단한 방법을 제공합니다.
사용하여 시스템; 사용 System.Collections.Generic 단계; 사용 을 System.Linq 단계; 사용 System.Text 단계; 사용 하여 System.Threading 단계; 사용 System.Threading.Tasks 단계; 공간 MyTask { 클래스 프로그램 { 정적 무효 메인 ( 문자열 []에 args) { Task.Run (() => { Thread.sleep를 ( 1000 ); Console.WriteLine ( " 任务执行中... " ) }); Console.WriteLine ( " 메인 스레드 실행 ... " ) Console.ReadKey () } } }
그것은 정적 메서드 TaskFactory.StartNew 방법의 사용을 대체 할 수있는, 그리고 Task.Factory TaskFactory 속성은 개체를 반환, TaskFactory.StartNew는 작업을 시작하는 메소드를 오버로드되었습니다.
사용하여 시스템; 사용 System.Collections.Generic 단계; 사용 을 System.Linq 단계; 사용 System.Text 단계; 사용 하여 System.Threading 단계; 사용 System.Threading.Tasks 단계; 네임 스페이스 MyTask { 클래스 프로그램 { 정적 무효 메인 ( 문자열 []에 args) { TaskFactory 공장 = 새 TaskFactory (); 작업 작업 1 = factory.StartNew (() => { Console.WriteLine ( " 任务1执行中... " ); }) 태스크 Task2 = Task.Factory.StartNew (() => { Console.WriteLine ( " 태스크 2 실행 ... " ) }) (Console.WriteLine " 메인 스레드 실행 ... " ); Console.ReadKey () } } }
IV. 완성 된 하나 이상의 작업을 기다리는
작업은 일반적으로 만들고, 스레드에서 비동기 적으로 실행하고 스레드가 작업을 실행하는 것입니다 시작하고, 어떤 경우에는 응용 프로그램이 하나 이상의 작업이 완료되지 않은 경우 경우, 한 번에 실행을 계속 호출 스레드를 필요로 당신이 완료 될 때 이러한 작업을 수행하기 위해 대기 할 응용 프로그램이 실행을 계속할 수, 당신은 완료하는 데 하나 이상의 작업을 호출하는 방법을 기다릴 기다릴 수 있습니다. Task.Wait () 메소드는 무조건 작업이 완료되지 않는 한,이 기다릴 차단 된 것으로, 대기됩니다.
사용하여 시스템; 사용 System.Collections.Generic 단계; 사용 을 System.Linq 단계; 사용 System.Text 단계; 사용 하여 System.Threading 단계; 사용 System.Threading.Tasks 단계; 네임 스페이스 MyTask { 클래스 프로그램 { 정적 무효 메인 ( 문자열 []에 args) { Console.WriteLine ( " 主程序开始执行... " ); TaskFactory 공장 = 새 TaskFactory (); 작업 작업 = factory.StartNew (() => { 에 Thread.sleep (1000 ); Console.WriteLine ( " 작업 실행이 ... 완료 " ); }); task.Wait (); Console.WriteLine는 ( " 메인 스레드의 실행이 완료 ... " ); Console.ReadKey (); } } }
: 작업 클래스에 대한 자세한 내용은 공식 문서를 참조하십시오 https://docs.microsoft.com/zh-cn/dotnet/api/system.threading.tasks.task?view=netframework-4.5을