웹 서비스에 액세스하고 값을 반환하는 스레드 세트를 생성합니다. threading.timer의 타임 아웃 타이머가 초과하면 각 스레드에 threading.timer를 추가하고 스레드가 사용하는 리소스를 할당 해제하려고했습니다.스레드가 멈추거나 실행을 완료하는 데 너무 많은 시간이 걸리는 경우 스레드 자원 할당 취소
내가 어떻게 그랬는지.
class ThreadTest
{
System.Threading.Timer ThreadTimeoutTimer = null;
private void ThreadStartMain()
{
ParameterizedThreadStart start = new ParameterizedThreadStart(new ThreadTest().ReadData);
Thread t = new Thread(start);
t.Start();
}
public void ReadData(object stat)
{
int _timeOutTimer = 60000;
Thread currentThread = Thread.CurrentThread;
ThreadTimeoutTimer = new System.Threading.Timer(ReleaseThread, currentThread, _timeOutTimer, Timeout.Infinite);
webservcieclient webcl = new webservcieclient();
webcl.GetData();
ThreadTimeoutTimer = null;
UpdateDB();
}
private void ReleaseThread(object state)
{
Thread runningThread = (Thread)state;
if (runningThread.IsAlive)
{
runningThread.Abort();
}
}
}
어떻게 작동하는지 확인하려면 webservcieclient가 시간 초과 시간을 초과했습니다. 타이머가 시작되고 스레드가 중단됩니다.
그렇다면 webservcieclient가 네트워크/http 예외 다음에 반환되는 경우가 있으며 실행 된 후 스레드가 중단되었음을 알리는 또 다른 예외가 throw됩니다. 또한 UpdateDB()가 두 번 실행되었습니다. 스레드가 이미 중단 되었기 때문에 실행 방법. 웹 서비스 메서드에 액세스하는 동안 다른 스레드가 시작 되었기 때문입니까?
webservice를 호출하는 데 사용하는 프레임 워크 클래스는 무엇입니까? 그것은'WebClient'입니까? – dcastro
예. 그것의 웹 서비스 클라이언트. – FatalError
실제로 웹 요청을 실행 한 행을 표시 할 수 있습니까? – dcastro