chiama una funzione e non la aspetti mai in C #

26

Ho un controller nella mia applicazione web mvc4 in cui è presente un'azione che deve chiamare un'altra funzione. Cosa succede in quella funzione, cioè il valore restituito non è importante per la mia azione. Come posso chiamare quella funzione e non aspettare mai che venga eseguita?

Penso che possa essere fatto da asincrono, ma il mio punto non è usare le risorse, basta chiamare la funzione e non aspettare mai che succeda mai.

Per favore, dammi un consiglio.

    
posta user2675751 30.08.2013 - 06:18
fonte

1 risposta

40
private void Demo()
{
    // Do something, given that the result doesn't matter.
}

public void Do()
{
    Task.Factory.StartNew(this.Demo);

    // The following line will be executed without waiting for the result.
    DoSomethingElse();
}

Nota che avviare un metodo senza preoccuparti del risultato o delle eccezioni che può generare è rischioso.

Se viene generata un'eccezione in Task , questa verrà nascosta finché:

  1. Osserva il risultato,
  2. Wait() per l'attività o:
  3. Il GC chiama il finalizzatore su Task .

Puoi gestire te stesso 1. e 2. poco dopo aver chiamato il metodo, oppure puoi allegare una continuazione con myTask.OnComplete(myErrorHandler, TaskContinuationOptions.OnlyOnFaulted) da eseguire quando l'attività originale genera un'eccezione. 3. si bloccherà il processo; non farlo.

    
risposta data 30.08.2013 - 08:33
fonte

Leggi altre domande sui tag