C #에서 함수를 호출하고 기다리지 마십시오.


26

mvc4 웹 응용 프로그램에 다른 함수를 호출 해야하는 작업이있는 컨트롤러가 있습니다. 그 기능에서 일어나는 일, 즉 반환 값은 내 행동에 중요하지 않습니다. 어떻게 그 함수를 호출하고 함수가 실행될 때까지 기다리지 않을 수 있습니까?

비동기로 수행 할 수 있다고 생각하지만 내 요점은 리소스를 사용하지 않고 함수를 호출하고 발생하는 일을 기다리지 않는 것입니다.

조언 좀주세요



당신이 할 수있는 유일한 방법은 다른 스레드로 전달하는 것입니다. 리소스없이 함수를 호출하는 것과 같은 것은 없습니다.
Robert Harvey

고마워, 나는 가장 좋고 최적화 된 방법을 의미했다. 나는 가장 좋은 방법은 Task.Run이라고 생각하고 MVC에서 WebApi를 사용하여 언급 한 링크를 기반으로, 아마도 자바 스크립트 솔루션을 사용할 수는 있지만, 그렇지 않다고 생각한다. 직업적인!
user2675751

답변:


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();
}

결과 나 예외가 발생할 수있는 방법에 신경 쓰지 않고 메소드를 시작하면 위험합니다.

에 예외가 발생 Task하면 다음 때까지 숨겨집니다.

  1. 결과를 관찰하십시오.
  2. Wait() 작업 또는
  3. GC는에서 종료자를 호출합니다 Task.

메소드를 호출 한 직후에 1. 및 2.를 직접 처리하거나 myTask.OnComplete(myErrorHandler, TaskContinuationOptions.OnlyOnFaulted)원래 작업에서 예외가 발생했을 때 연속을 첨부하여 실행할 수 있습니다. 3. 프로세스가 중단됩니다. 하지마


3
"3. 프로세스가 중단됩니다. 그렇게하지 마십시오"로 확장 할 수 있습니까? 이 작업이 자동으로 수행되지 않습니까?
rdans
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.