Condividi tramite


ControlledExecution.Run(Action, CancellationToken) Metodo

Definizione

Attenzione

ControlledExecution.Run method may corrupt the process and should not be used in production code.

Esegue il codice che può essere interrotto in modo asincrono.

public:
 static void Run(Action ^ action, System::Threading::CancellationToken cancellationToken);
[System.Obsolete("ControlledExecution.Run method may corrupt the process and should not be used in production code.", DiagnosticId="SYSLIB0046", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static void Run (Action action, System.Threading.CancellationToken cancellationToken);
[<System.Obsolete("ControlledExecution.Run method may corrupt the process and should not be used in production code.", DiagnosticId="SYSLIB0046", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
static member Run : Action * System.Threading.CancellationToken -> unit
Public Shared Sub Run (action As Action, cancellationToken As CancellationToken)

Parametri

action
Action

Delegato che rappresenta il codice da eseguire.

cancellationToken
CancellationToken

Token di annullamento che può essere usato per interrompere l'esecuzione.

Attributi

Eccezioni

Il metodo non è supportato in questa piattaforma.

Il valore dell'argomento action è null.

Il thread corrente esegue già il Run(Action, CancellationToken) metodo .

L'esecuzione è stata interrotta.

Commenti

Questo metodo consente di interrompere il codice gestito arbitrario in modo non cooperativo generando un'eccezione nel thread che esegue tale codice. Anche se l'eccezione può essere intercettata dal codice, viene generata nuovamente alla fine dei blocchi fino a quando il flusso di catch esecuzione non torna al ControlledExecution.Run metodo .

Non è garantito che l'esecuzione del codice interrompa immediatamente o. Questa situazione può verificarsi, ad esempio, se un thread è bloccato durante l'esecuzione di codice non gestito o dei catch blocchi e finally chiamati come parte della routine di interruzione, in modo da ritardare indefinitamente l'interruzione. Inoltre, l'esecuzione potrebbe non essere interrotta immediatamente se il thread sta eseguendo un catch blocco o finally .

L'interruzione del codice in una posizione imprevista può danneggiare lo stato delle strutture di dati nel processo e causare risultati imprevedibili. Per questo motivo, questo metodo non deve essere usato nel codice di produzione e chiamarlo genera un avviso in fase di compilazione.

Si applica a