Task.Factory 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
Task 및 Task<TResult> 인스턴스를 만들고 구성하는 팩터리 메서드에 대한 액세스를 제공합니다.
public:
static property System::Threading::Tasks::TaskFactory ^ Factory { System::Threading::Tasks::TaskFactory ^ get(); };
public static System.Threading.Tasks.TaskFactory Factory { get; }
static member Factory : System.Threading.Tasks.TaskFactory
Public Shared ReadOnly Property Factory As TaskFactory
속성 값
다양한 및 Task<TResult> 개체를 만들 수 있는 팩터리 Task 개체입니다.
설명
이 속성은 매개 변수가 없는 TaskFactory.TaskFactory() 생성자를 호출하여 만든 클래스와 동일한 클래스의 TaskFactory 기본 인스턴스를 반환합니다. 다음과 같은 속성 값이 있습니다.
이 속성의 가장 일반적인 사용은 만들고 메서드에 대 한 단일 호출에서 새 작업을 시작 하는 것입니다 TaskFactory.StartNew .
다음 예제에서는 정적 Factory 속성을 사용하여 메서드를 두 차례 호출합니다 TaskFactory.StartNew . 첫 번째는 사용자의 MyDocuments 디렉터리에 있는 파일 이름으로 배열을 채우고, 두 번째는 사용자의 MyDocuments 디렉터리의 하위 디렉터리 이름으로 배열을 채웁니다. 그런 다음 처음 두 작업이 실행을 완료한 후 두 배열의 파일 및 디렉터리 수에 대한 정보를 표시하는 메서드를 호출 TaskFactory.ContinueWhenAll(Task[], Action<Task[]>) 합니다.
using System;
using System.IO;
using System.Threading.Tasks;
public class Example
{
public static void Main()
{
Task[] tasks = new Task[2];
String[] files = null;
String[] dirs = null;
String docsDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
tasks[0] = Task.Factory.StartNew( () => files = Directory.GetFiles(docsDirectory));
tasks[1] = Task.Factory.StartNew( () => dirs = Directory.GetDirectories(docsDirectory));
Task.Factory.ContinueWhenAll(tasks, completedTasks => {
Console.WriteLine("{0} contains: ", docsDirectory);
Console.WriteLine(" {0} subdirectories", dirs.Length);
Console.WriteLine(" {0} files", files.Length);
} );
}
}
// The example displays output like the following:
// C:\Users\<username>\Documents contains:
// 24 subdirectories
// 16 files
open System
open System.IO
open System.Threading.Tasks
let mutable files = Unchecked.defaultof<string[]>
let mutable dirs = Unchecked.defaultof<string[]>
let docsDirectory = Environment.GetFolderPath Environment.SpecialFolder.MyDocuments
let tasks =
[| Task.Factory.StartNew(fun () -> files <- Directory.GetFiles docsDirectory)
Task.Factory.StartNew(fun () -> dirs <- Directory.GetDirectories docsDirectory) |]
Task.Factory.ContinueWhenAll(
tasks,
fun completedTasks ->
printfn $"{docsDirectory} contains: "
printfn $" {dirs.Length} subdirectories"
printfn $" {files.Length} files"
)
|> ignore
// The example displays output like the following:
// C:\Users\<username>\Documents contains:
// 24 subdirectories
// 16 files
Imports System.IO
Imports System.Threading.Tasks
Module Example
Public Sub Main()
Dim tasks(1) As Task
Dim files() As String = Nothing
Dim dirs() As String = Nothing
Dim docsDirectory As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
tasks(0) = Task.Factory.StartNew( Sub()
files = Directory.GetFiles(docsDirectory)
End Sub )
tasks(1) = Task.Factory.StartNew( Sub()
dirs = Directory.GetDirectories(docsDirectory)
End Sub )
Task.Factory.ContinueWhenAll(tasks, Sub(completedTasks)
Console.WriteLine("{0} contains: ", docsDirectory)
Console.WriteLine(" {0} subdirectories", dirs.Length)
Console.WriteLine(" {0} files", files.Length)
End Sub)
End Sub
End Module
' The example displays output like the following:
' C:\Users\<username>\Documents contains:
' 24 subdirectories
' 16 files
적용 대상
추가 정보
.NET