.net生成大量静态页面速度太慢,想使用多线程解决这个问题。但不会用。请大家帮忙!!!!现在1000多条新闻要三四分钟。
附上需要修改的代码:
protected void wznewxq_Click(object sender, EventArgs e)
{
string q1 = "select NS_Id from NewsSort where NS_Stop=0 order by NS_Order desc";
DataSet qq1 = DBHelper.GetDataSet(q1);
int a = 0;
for (int q = 0; q < qq1.Tables[0].Rows.Count; q++)
{
string w1 = "select * from News,NewsSort where News.N_Sortid=NewsSort.NS_Id and N_Sortid=" + qq1.Tables[0].Rows[q]["NS_Id"] + " and N_Show=1 order by N_Order desc";
DataSet ww1 = DBHelper.GetDataSet(w1);
string w2 = "select top 1 N_Order from News where N_Sortid=" + qq1.Tables[0].Rows[q]["NS_Id"] + " and N_Show=1 order by N_Order desc";
DataSet ww2 = DBHelper.GetDataSet(w2);
string w3 = "select top 1 N_Order from News where N_Sortid=" + qq1.Tables[0].Rows[q]["NS_Id"] + " and N_Show=1 order by N_Order asc";
DataSet ww3 = DBHelper.GetDataSet(w3);
for (int m = 0; m < ww1.Tables[0].Rows.Count; m++)
{
//替换掉模板中的特征字符
string mbPath = Server.MapPath("/manager/n134.html");
Encoding code = Encoding.GetEncoding("UTF-8");
StreamReader sr = null;
StreamWriter sw = null;
string str = null;
//读取
try
{
sr = new StreamReader(mbPath, code);
str = sr.ReadToEnd();
}
catch (Exception ex)
{
throw ex;
}
finally
{
sr.Close();
}
Inittail();
Inittop();
StringBuilder sq = new StringBuilder();
sq.Append("<div class=\"ncont_page\">" + "\n");
if (Convert.ToString(ww1.Tables[0].Rows[m]["N_Order"]) == Convert.ToString(ww2.Tables[0].Rows[0]["N_Order"]) && Convert.ToString(ww1.Tables[0].Rows[m]["N_Order"]) == Convert.ToString(ww3.Tables[0].Rows[0]["N_Order"]))
{
sq.Append("<p class=\"l\">上一篇:没有了</p>" + "\n");
sq.Append("<p class=\"r\">下一篇:没有了</p>" + "\n");
}
else if (Convert.ToString(ww1.Tables[0].Rows[m]["N_Order"]) == Convert.ToString(ww2.Tables[0].Rows[0]["N_Order"]) && Convert.ToString(ww1.Tables[0].Rows[m]["N_Order"]) != Convert.ToString(ww3.Tables[0].Rows[0]["N_Order"]))
{
string r2 = "select top 1 N_Url,N_Name from News where N_Order < " + ww1.Tables[0].Rows[m]["N_Order"] + " and N_Show=1 and N_Sortid=" + qq1.Tables[0].Rows[q]["NS_Id"] + " order by N_Order desc";
DataSet t2 = DBHelper.GetDataSet(r2);
sq.Append("<p class=\"l\">上一篇:没有了</p>" + "\n");
sq.Append("<p class=\"r\">下一篇:<a href = \"" + t2.Tables[0].Rows[0]["N_Url"] + "\" title=\"" + t2.Tables[0].Rows[0]["N_Name"] + "\">" + t2.Tables[0].Rows[0]["N_Name"] + "</a></p>" + "\n");
}
else if (Convert.ToString(ww1.Tables[0].Rows[m]["N_Order"]) == Convert.ToString(ww3.Tables[0].Rows[0]["N_Order"]) && Convert.ToString(ww1.Tables[0].Rows[m]["N_Order"]) != Convert.ToString(ww2.Tables[0].Rows[0]["N_Order"]))
{
string r1 = "select top 1 N_Url,N_Name from News where N_Order > " + ww1.Tables[0].Rows[m]["N_Order"] + " and N_Show=1 and N_Sortid=" + qq1.Tables[0].Rows[q]["NS_Id"] + " order by N_Order asc";
DataSet t1 = DBHelper.GetDataSet(r1);
sq.Append("<p class=\"l\">上一篇:<a href = \"" + t1.Tables[0].Rows[0]["N_Url"] + "\" title=\"" + t1.Tables[0].Rows[0]["N_Name"] + "\">" + t1.Tables[0].Rows[0]["N_Name"] + "</a></p>" + "\n");
sq.Append("<p class=\"r\">下一篇:没有了 </p>" + "\n");
}
else
{
string r1 = "select top 1 N_Url,N_Name from News where N_Order > " + ww1.Tables[0].Rows[m]["N_Order"] + " and N_Show=1 and N_Sortid=" + qq1.Tables[0].Rows[q]["NS_Id"] + " order by N_Order asc";
DataSet t1 = DBHelper.GetDataSet(r1);
string r2 = "select top 1 N_Url,N_Name from News where N_Order < " + ww1.Tables[0].Rows[m]["N_Order"] + " and N_Show=1 and N_Sortid=" + qq1.Tables[0].Rows[q]["NS_Id"] + " order by N_Order desc";
DataSet t2 = DBHelper.GetDataSet(r2);
sq.Append("<p class=\"l\">上一篇:<a href = \"" + t1.Tables[0].Rows[0]["N_Url"] + "\" title=\"" + t1.Tables[0].Rows[0]["N_Name"] + "\">" + t1.Tables[0].Rows[0]["N_Name"] + "</a></p>" + "\n");
sq.Append("<p class=\"r\">下一篇:<a href = \"" + t2.Tables[0].Rows[0]["N_Url"] + "\" title=\"" + t2.Tables[0].Rows[0]["N_Name"] + "\">" + t2.Tables[0].Rows[0]["N_Name"] + "</a></p>" + "\n");
}
sq.Append("</div>" + "\n");
string[] ids;
string sn = ww1.Tables[0].Rows[m]["N_Pid"].ToString();
StringBuilder xa1 = new StringBuilder();
StringBuilder xa = new StringBuilder();
if (sn != "")
{
xa.Append("<div id=\"pro\" class=\"proj_pro\">" + "\n");
xa.Append("<h2>相关产品</h2>" + "\n");
xa.Append("<ul>" + "\n");
ids = sn.Split(',');
if (ids.Length >= 4)
{
for (int k = 0; k < 4; k++)
{
int id = Convert.ToInt32(ids[k]);
string wa = "select P_Url,P_Pic,P_Name from Product where P_Id=" + id + "";
DataSet ws = DBHelper.GetDataSet(wa);
xa.Append("<li>" + "\n");
xa.Append("<a href=\"" + ws.Tables[0].Rows[0]["P_Url"] + "\"><img src=\"" + ws.Tables[0].Rows[0]["P_Pic"] + "\" alt=\"" + ws.Tables[0].Rows[0]["P_Name"] + "\" /></a>" + "\n");
xa.Append("<a href=\"" + ws.Tables[0].Rows[0]["P_Url"] + "\">" + "\n");
xa.Append("<p>" + ws.Tables[0].Rows[0]["P_Name"] + "</p>" + "\n");
xa.Append("</a>" + "\n");
xa.Append("</li>" + "\n");
}
}
else
{
for (int k = 0; k < ids.Length; k++)
{
int id = Convert.ToInt32(ids[k]);
string wa = "select P_Url,P_Pic,P_Name from Product where P_Id=" + id + "";
DataSet ws = DBHelper.GetDataSet(wa);
xa.Append("<li>" + "\n");
xa.Append("<a href=\"" + ws.Tables[0].Rows[0]["P_Url"] + "\">" + "\n");
xa.Append("<img src=\"" + ws.Tables[0].Rows[0]["P_Pic"] + "\" alt=\"" + ws.Tables[0].Rows[0]["P_Name"] + "\" /></a>" + "\n");
xa.Append("<a href=\"" + ws.Tables[0].Rows[0]["P_Url"] + "\">" + "\n");
xa.Append("<p>" + ws.Tables[0].Rows[0]["P_Name"] + "</p>" + "\n");
xa.Append("</a>" + "\n");
xa.Append("</li>" + "\n");
}
}
xa.Append("</ul>" + "\n");
xa.Append("</div>" + "\n");
}
string[] idm;
string snm = ww1.Tables[0].Rows[m]["N_Nlistid"].ToString();
StringBuilder mm1 = new StringBuilder();
if (snm != "")
{
mm1.Append("<div id =\"rptnews\" class=\"ncont_news\">" + "\n");
mm1.Append("<h2>相关新闻</h2>" + "\n");
mm1.Append("<ul>" + "\n");
idm = snm.Split(',');
for (int k = 0; k < idm.Length; k++)
{
int id = Convert.ToInt32(idm[k]);
string wa = "select * from News where N_Id=" + id + "";
DataSet ws = DBHelper.GetDataSet(wa);
mm1.Append("<li>" + "\n");
mm1.Append("<a href =\"" + ws.Tables[0].Rows[0]["N_Url"] + "\">" + ws.Tables[0].Rows[0]["N_Name"] + "</a>" + "\n");
mm1.Append("</li>" + "\n");
}
mm1.Append("</ul>" + "\n");
mm1.Append("</div>" + "\n");
}
string mx1 = mm1.ToString();
string xx1 = xa.ToString();
string st = sq.ToString();
string biaoti = ww1.Tables[0].Rows[m]["N_Name"].ToString();
string Ncaption = ww1.Tables[0].Rows[m]["N_Title"].ToString();
string Nkeyword = ww1.Tables[0].Rows[m]["N_Keywords"].ToString();
string Ndescribe = ww1.Tables[0].Rows[m]["N_Description"].ToString();
string dizhi = ww1.Tables[0].Rows[m]["NS_Name"].ToString();
string weizhi = ww1.Tables[0].Rows[m]["NS_Url"].ToString();
string time = ww1.Tables[0].Rows[m]["N_Date"].ToString();
string conter = ww1.Tables[0].Rows[m]["N_Content"].ToString();
//根据时间自动重命名,扩展名也可以自行修改
str = str.Replace("$stm$", st);
str = str.Replace("$mx1$", mx1);
str = str.Replace("$xx1$", xx1);
str = str.Replace("$top$", top);
str = str.Replace("$tail$", tail);
str = str.Replace("$time$", time);
str = str.Replace("$conter$", conter);
str = str.Replace("$Ndescribe$", Ndescribe);
str = str.Replace("$Nkeyword$", Nkeyword);
str = str.Replace("$biaoti$", biaoti);
str = str.Replace("$weizhi$", weizhi);
str = str.Replace("$dizhi$", dizhi);
str = str.Replace("$Ncaption$", Ncaption);
string fileName = "" + ww1.Tables[0].Rows[m]["N_Url"] + "";
//生成静态文件
try
{
sw = new StreamWriter(Server.MapPath("/") + fileName, false, code);
sw.Write(str);
sw.Flush();
}
catch (Exception ex)
{
throw ex;
}
finally
{
sw.Close();
}
a = m;
}
}
Response.Write("<script>alert('共生成了" + a + "个页面。')</script>");
}