C#多线程编程

yxy10072510329 2010-07-24 05:02:33

XMLAnalysisDAO xanalysis=new XMLAnalysisDAO();
int number = 1;
try
{
foreach (XMLFileName xmlfname in xmlfilelist)
{
List<BookDataInfo> bookDataList = new List<BookDataInfo>();
bookDataList=xanalysis.Analysis(xmlfname.filePath);
Console.WriteLine(number.ToString() + ":" +
xmlfname.filePath.Substring(xmlfname.filePath.LastIndexOf('\\'), xmlfname.filePath.Length - xmlfname.filePath.LastIndexOf('\\')) + "解析完毕!");
number++;
}

}


代码如上:现在我要把这段代码改成多线程编程的方法写,也就是每一次foreach,启动一个线程,咋写,在线等
...全文
140 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
happyrain2010 2010-07-26
  • 打赏
  • 举报
回复
应该根据CPU数量和文件数量来考虑开多少个线程
  • 打赏
  • 举报
回复
尽可能不使用Thread,使用任何一种线程池方式来产生异步操作。

要注意,异步编程并不等于必然创建一个线程。
  • 打赏
  • 举报
回复
使用ParameterizedThreadStart 传递参数是标准的方法,不过楼上wuyazhe说得对,线程太多,反而降低效率
panyueWGL 2010-07-24
  • 打赏
  • 举报
回复
方法里面应该传递个参数
yxy10072510329 2010-07-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zgke 的回复:]
.....xmlfilelist多了 线程就多了..这想法..
使用ParameterizedThreadStart 传递参数

System.Threading.Thread _Thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(ThreadMethod));
_T……
[/Quote]
Error 67 Delegate 'System.Threading.ThreadStart' does not take '1' argumentsr

你的方法,报了上面的错误
gumwzg 2010-07-24
  • 打赏
  • 举报
回复
Thread
兔子-顾问 2010-07-24
  • 打赏
  • 举报
回复
没测试,你试试这样写法。

XMLAnalysisDAO xanalysis=new XMLAnalysisDAO();
int number = 1;
try
{
foreach (XMLFileName item in xmlfilelist)
{
new Thread(delegate(object[] o)
{
XMLFileName xmlfname = (XMLFileName)o[0];
List<BookDataInfo> bookDataList = new List<BookDataInfo>();
bookDataList=xanalysis.Analysis(xmlfname.filePath);
Console.WriteLine(number.ToString() + ":" +
xmlfname.filePath.Substring(xmlfname.filePath.LastIndexOf('\\'), xmlfname.filePath.Length - xmlfname.filePath.LastIndexOf('\\')) + "解析完毕!");
number++;
},new object[]{item}).Start();
}
}

但这样会比不用多线程更慢的。线程执行时间可能比线程启动,调度时间还短。效率只会下降。
zgke 2010-07-24
  • 打赏
  • 举报
回复
.....xmlfilelist多了 线程就多了..这想法..
使用ParameterizedThreadStart 传递参数

System.Threading.Thread _Thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(ThreadMethod));
_Thread.Start(xmlfname);


110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧