public void WriteToLog(string Msg)
{
//Write to Log
}
public static void Apple()
{
WriteToLog("Apple Started"); // third log line
}
public void CallFunction()
{
Thread EmailThread = new Thread(new ThreadStart(Apple));
WriteToLog(EmailThread.ThreadState.ToString()); // first log line
EmailThread.Start();
WriteToLog(EmailThread.ThreadState.ToString()); // second log line
}
로그 파일에 첫 줄과 두 번째 줄이 표시됩니다. 하지만 제 3의 라인을 얻을 수 없습니다.ASP.NET의 스레드에 대한 이상한 동작
단순히 Apple
함수를 호출하면 세 번째 행을 가져올 수 있습니다.
이고 첫 번째 줄은 Unstarted
이고 두 번째 줄은 running
입니다.
세 번째 줄이 없습니다.
제가 second log line
아래 while
루프 물품
while(EmailThread.ThreadState.ToString()=="Running")
{
WriteToLog("Thread running");
}
이것은 무한 반복된다. IIS를 중단해야했습니다.
이상한 행동입니까?
Apple
내부의 모든 기능이 작동하지 않는 것 같습니다.
스레드 상태가 실행 중입니다.
I lost. 어떤 생각?
또는 새 스레드로 인해 로그 파일에 쓸 수 없습니까? 같은 로그 파일? 그러나 나는 이미 2 개의 다른 로그 파일을 시도했다. 아직 작동하지 않습니다 ...
및 Apple
의 시작 부분에 로그 파일에 쓸 함수를 작성했습니다.
왜 스레드를 사용하고 있습니까? 당신은 내가 당신이 처음에 그것을 필요로하지 않는다고 믿을만한 좋은 이유 인 다중 쓰레드 코드를 작성하는 방법에 대한 이해가 부족한 것처럼 보입니다. ASP.NET은 자체 스레드 풀을 가지고 있으며 효과적으로 들어오는 요청을 다중 스레드합니다. 당신은 스스로 할 필요가 없습니다. – x0n
그것은 스레드를 사용하고있는 것은 아니지만 .. 스레드를 사용하여 코드를 수정하고 있습니다. – william
어떤 로그를 사용하고 있습니까? 제공하는 코드에서 볼 수없는 파일 잠금이있을 수 있습니다. 로그 코드에 실제 쓰기를 보여 주므로 Thread.Start()가 작동하고 있음을 알 수 있습니다. –