2014-06-09 4 views
1

사용자가 프로그램에서 일부 필드를 변경하고 SAVE을 수행하는 경우 webserivce 요청이 전송되어 일부 로깅 정보가 데이터베이스에 저장됩니다. 나는 웹 사이트에서 일부 검색을했고, Async 통화이 솔루션을 발견 :ASMX 웹 서비스의 비동기 호출

ThreadPool.QueueUserWorkItem(delegate 
{ 
    // Create an instance of my webservice object. 
    // call its Log webmethod. 
}); 

을하지만 webservicesAsync 통화와 많은 경험을 가지고 있지 않기 때문에 그래서 나는 당신에게 내가 가지고있는 시나리오와 방법 I을 보여주고 싶었다 그것에 대해 귀하의 의견을 듣고 그것을 처리하는 올바른 방법입니다. 제안에 감사드립니다.

답변

2

로깅 작업을 손실 할 수 있습니까? 그런 다음에 만 ASP.NET 응용 프로그램에서 "배경 작업"을 시작해야합니다.

QueueUserWorkItem이 작동합니다. 최신 버전은 Task.Run입니다. 해당 스레드 풀 스레드에서 발생하는 오류를 catch하십시오. 그렇지 않은 경우 버그에 대해 알지 않고 조용히 일할 수 있습니다.

전화가 많이 걸리거나 예상 시간이 오래 걸릴 것으로 예상되는 경우 consider using async IO. 진행 중에는 아무 스레드도 사용하지 않습니다 (백그라운드 스레드조차도).

+0

제안 해 주셔서 감사합니다. –

+0

prob. .NET 4.i에서 나 때문에 Task.Run을 표시하지 않습니다? 하지만 Intellisence는 Task.Factory.StartNew()를 보여줍니다. 그거 좋은가요? –

+0

거의 동일하고 완전히 사용할 수 있습니다. 태스크 API에 관한 모범 사례에 대한 연구를하고 싶을 수도 있습니다. 오래 걸리지 않고 문제를 줄일 수 있습니다. – usr