我有一个队列,它接收数据超时。我使用多线程出列并保存到数据库。我创建了一个线程数组来完成这项工作。
for (int i = 0; i < thr.Length; i++)
{
thr[i] = new Thread(new ThreadStart(SaveData));
thr[i].Start();
}
保存数据
注意:eQ 和 eiQ 是 2 个全局队列。我用while来保持线程活着。
public void SaveData()
{
var imgDAO = new imageDAO ();
string exception = "";
try
{
while (eQ.Count > 0 && eiQ.Count > 0)
{
var newRecord = eQ.Dequeue();
var newRecordImage = eiQ.Dequeue();
imageDAO.SaveEvent(newEvent, newEventImage);
var storepath = Properties.Settings.Default.StorePath;
save.WriteFile(storepath, newEvent, newEventImage);
}
}
catch (Exception e)
{
Global._logger.Info(e.Message + e.Source);
}
}
它确实创建了多线程,但是当我调试时,只有 1 个线程活着,其余的都死了。我不知道为什么?有人知道吗?Tks