TaskScheduler.TryExecuteTaskInline(Task, Boolean) 메서드

정의

제공된 Task를 이 호출에서 동기적으로 실행할 수 있는지 여부를 확인하고 실행 가능할 경우 실행합니다.

protected:
 abstract bool TryExecuteTaskInline(System::Threading::Tasks::Task ^ task, bool taskWasPreviouslyQueued);
[System.Security.SecurityCritical]
protected abstract bool TryExecuteTaskInline (System.Threading.Tasks.Task task, bool taskWasPreviouslyQueued);
protected abstract bool TryExecuteTaskInline (System.Threading.Tasks.Task task, bool taskWasPreviouslyQueued);
[<System.Security.SecurityCritical>]
abstract member TryExecuteTaskInline : System.Threading.Tasks.Task * bool -> bool
abstract member TryExecuteTaskInline : System.Threading.Tasks.Task * bool -> bool
Protected MustOverride Function TryExecuteTaskInline (task As Task, taskWasPreviouslyQueued As Boolean) As Boolean

매개 변수

task
Task

실행할 Task입니다.

taskWasPreviouslyQueued
Boolean

작업이 이전에 큐에 대기되었는지 여부를 나타내는 부울입니다. 이 매개 변수가 True이면 작업이 이전에 큐에 대기된 것일 수 있습니다. False이면 작업이 큐에 대기되지 않은 것입니다. 작업을 큐에 대기하지 않고 인라인으로 실행하려면 이 호출을 수행합니다.

반환

Boolean

작업이 인라인으로 실행되었는지 여부를 나타내는 부울 값입니다.

특성

예외

task 인수가 null입니다.

task가 이미 실행되었습니다.

설명

파생 TaskScheduler 된 클래스는 해당 작업 개체에 대한 대기를 시작하는 스레드에서 태스크의 인라인 실행을 지원하기 위해 이 함수를 구현합니다. 인라인 실행은 선택 사항이며 false를 반환하여 요청이 거부될 수 있습니다. 그러나 인라인 처리할 수 있는 작업이 많을수록 스케줄러의 크기가 더 낫습니다. 실제로 인라인이 너무 적은 스케줄러는 교착 상태에 빠지기 쉽습니다. 적절한 구현은 스케줄러가 보장하는 정책에 따라 실행되는 요청이 성공적으로 인라인될 수 있도록 해야 합니다. 예를 들어 스케줄러가 전용 스레드를 사용하여 작업을 실행하는 경우 해당 스레드의 인라인 요청이 성공해야 합니다.

스케줄러가 인라인 실행을 수행하기로 결정한 경우 제공된 작업 개체를 사용하여 기본 TaskScheduler 메서드 TryExecuteTask 를 호출하여 반환 값을 전파하여 실행해야 합니다. 또한 인라인 요청을 적용하기로 결정한 경우 스케줄러가 내부 데이터 구조에서 인라인 작업을 제거하는 것이 적절할 수 있습니다. 그러나 일부 상황에서는 스케줄러가 이전에 메서드와 함께 QueueTask 제공되지 않은 작업을 인라인으로 입력하라는 메시지가 표시될 수 있습니다.

파생된 스케줄러는 자체 일정 및 실행 정책과 관련된 한 호출 스레드가 지정된 작업을 실행하는 데 적합한지 확인해야 합니다.

자세한 내용은 TaskScheduler를 참조하세요.

적용 대상

추가 정보