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
}
在日志文件中,我得到了第一行和第二行。但我无法获得第三条线。ASP.NET中线程的奇怪行为
我可以得到第三行,如果我只是简单地调用Apple
函数。第一行是Unstarted
,第二行是running
。
没有第三条线。
当我写下second log line
while
环
,
while(EmailThread.ThreadState.ToString()=="Running")
{
WriteToLog("Thread running");
}
变成无限循环。我不得不停止IIS。
这是一种奇怪的行为?
Apple
内的所有功能似乎也不工作。
但线程状态运行..
我迷路了。任何想法?
还是因为新的线程,它不能写入日志文件?相同的日志文件?但我已经尝试了2个不同的日志文件。它仍然没有工作...
和我写的函数写入日志文件在Apple
开始。
:把它定义为一个字段的类像这样?你似乎缺乏对如何编写多线程代码的理解,这是我相信你不需要它的一个很好的理由。 ASP.NET有它自己的线程池,并将有效地为你传入多个请求。你不必亲自去做。 – x0n
这不是我正在使用的线程..但我纠正的代码是使用线程.. – william
你使用什么日志?可能会出现一些文件锁定,这些锁定无法从您提供的代码中看到。显示实际写入日志代码,因为我很确定Thread.Start()正在工作 –