아주 긴 sp (SSMS에서 약 1 시간의 sp 실행 시간)를 실행하는 asp.net 페이지를 만들었습니다.긴 SP 실행 중 스레드가 중단되고 있습니까?
이 SP를 활성화하는 Admin.aspx가 있습니다. 하여 Web.config에서
I을 첨가했다 : 필자가 추가 연결 특성에도
<httpRuntime maxRequestLength="111264" requestValidationMode="2.0" executionTimeout="10000000" />
:
_cmd.CommandTimeout = 0; // unlimited
함수 (SP를 활성화하는 (ASHX에) JQuery와 AJAX를 사용
그것은 잘 작동하고 있습니다)
jquery는 sp를 활성화하는 ashx 파일을 호출합니다.
그러나 나는 UI를 작업의 마지막까지 차단됩니다 싶지 않았다 그래서 ASHX 파일에 스레드 생성 :
이public void ProcessRequest(HttpContext context)
{
string xmlFileNameParam = ...
string bakFileName = ...
ParameterizedThreadStart ThreadWithParam = dbFuncForThread;
Thread thread = new Thread(ThreadWithParam);
thread.IsBackground = false;
dynamic d = new ExpandoObject();
d.XmlFileNameParam = xmlFileNameParam;
d.BakFileName = bakFileName;
thread.Start(d);
}
public void dbFuncForThread(dynamic d)
{
// activate the long sp
}
그러나 잠시 후, 내가이 오류 참조 EventLog (및 작업이 중지됨) : **
259Thread가 중단되었습니다. at System.Threading.Thread.SleepInternal (Int32 millisecondsTimeout) *
왜?
내가 스레드에게이 필요한 모든 환경 (연결 시간 초과, 실행 시간 초과)P.S.했다 내가 스레드를 사용하고 (UI 그래도 차단되어)과 같은 일반적인 코드를 삽입하지 않은 경우 :
public void ProcessRequest(HttpContext context)
{
string xmlFileNameParam = ...
string bakFileName = ...
dynamic d = new ExpandoObject();
d.XmlFileNameParam = xmlFileNameParam;
d.BakFileName = bakFileName;
dbFuncForthread(d);
}
public void dbFuncForThread(dynamic d )
{
// activate the long sp...
}
그래서 코드가 괜찮 모든 것이 괜찮습니다. 어떻게 그리고 왜 그런가요? 어떻게 해결합니까?
아마도 저장 프로 시저를 최적화 할 시간이 있습니까? – Oded
@dsp는 매우 간단합니다. bak 파일을로드하고 데이터를 스크램블하고 새로운 bak을 저장합니다. 단지 해시 데이터 ... 아주 간단한 sp. –
@Royi : 왜 동적 객체를 사용합니까? – abatishchev