我在iis应用程序中有一个基于事件的场景(c#)。我想在事件发生时启动线程并在后台然后线程完成它们的工作。我的问题是在某些情况下只有一个线程正在工作。当我检查时线程状态所有线程看起来开始。据我所知,如果一个线程完成工作并睡眠,另一个线程也是睡眠和等待。我怎样才能解决这个多线程问题?我希望我的所有线程都在后台工作。当事件发生时每个相关的线程都是工作,并且彼此独立地再次睡觉。
在应用程序中,立即调用ProcessMyMessages()。所有应用程序生命周期线程都在后台工作
.................
public void ProcessMyMessages() {
Dictionary<string,string> messages=new Dictionary<string,string>();
messages.Add("message1","value1");
messages.Add("message2","value2");
foreach(var item in messages)
{
StartMessageExecuter(message,value);
}
}
public void StartMessageExecuter(string message,string value)
{
Thread t=new Thread(()=>ExecuteMessage(message,value));
t.IsBackground=true;
t.Start();
}
internal void ExecuteMessage(string message,string value)
{
ThreadMessage m=new ThreadMessage();
m.ProcessMessage(message,value);
}
.....
public class ThreadMessage
{
private AutoResetEvent receiveCompleteEvent=null;
public void ProcessMessage(string message,string value)
{
using(receiveCompleteEvent=new AutoResetEvent(false))
{
DoJob(message,value);
receiveCompleteEvent.WaitOne();
}
}
public DoJob(string message,string value)
{
//Here is event base if message is comming then executed
}
}