my asp .net mvc 프로젝트 클래스에서 저장소 메소드에 대한 시간 계산을 구현해야합니다. 문제는 WCF 서비스에 시간 계산 데이터를 보내야하는데 시간이 많이 소요된다는 것입니다. 비동기 적으로 WCF 서비스를 조정할 수있는 스레드에 대해 생각합니다. 그러나 나는 그것에 대한 경험이 거의 없다. 매번 새로운 스레드를 생성해야합니까, 아니면 글로벌 스레드를 생성 할 수 있습니까?메소드 실행 시간을 계산하고 비동기 WCF 서비스로 보내기
스톱워치 클래스
public class StopWatch
{
private DateTime _startTime;
private DateTime _endTime;
public void Start()
{
_startTime = DateTime.Now;
}
protected void StopTimerAndWriteStatistics()
{
_endTime = DateTime.Now;
TimeSpan timeResult = _endTime - _startTime;
//WCF proxy object
var reporting = AppServerUtility.GetProxy<IReporting>();
//Send data to server
reporting.WriteStatistics(_startTime, _endTime, timeResult, "some information");
}
public void Stop()
{
//Here is the thread I have question with
var thread = new Thread(StopTimerAndWriteStatistics);
thread.Start();
}
}
내가 스레드 잘못 뭐하는 거지 저장소
public class SomeRepository
{
public List<ObjectInfo> List()
{
StopWatch sw = new StopWatch();
sw.Start();
//performing long time operation
sw.Stop();
}
}
에 스톱워치 클래스의 사용 : 나는 그런 일이? 어떻게 성능상의 이유로 스레드를 재사용 할 수 있습니까?
매번 새로운 스레드를 생성 할 때 성능상의 문제가 걱정됩니다. 이러한 작업에 전역 스레드 객체를 사용하는 것이 더 좋을까요? – wassertim
전역 스레드 객체와 같은 것은 없습니다. 스레드를 수동으로 (이전처럼) 작성하거나 IO 완료 포트를 사용하는 BeginXXX, EndXXX 메소드를 사용하십시오. 호출 실행 중에는 스레드가 소비되지 않으므로 매우 효율적입니다. 이 경우 웹 서비스 호출은 주 스레드에서 시작되며이 주 스레드는 즉시 스레드 풀로 반환됩니다. –
예 글로벌 스레드가 없습니다. 그러나 우리는 스레드를 어떻게 든 재사용 할 수 있습니까? 매번 새 스레드를 만드는 것이 효율적이지 않습니다. – wassertim