线程池thread.pool中的委托WaitCallback能不能返回结果

sftrs 2013-05-03 12:08:18
使用线程池中我们使用WaitCallback时不需返回,方法一般都采用了空类型(使用VOID),但是我现在手上有一个方法,因为并发量很大,所以想使用线程池,同时这个方法是有返回类型的(返回的是字符串)。请问我怎么在WaitCallback中使得结果将以string类型返回。
方法如下:
public string getDataFromProc(string dataTableName)
{
String xml = "";
DataTable db2 = new DataTable();
XmlAnalysis al = new XmlAnalysis();
DataTable db = al.stringToDataTable(dataTableName);

Checkings ck = new Checkings();
Control cl = new Control();
bool b = ck.getAuthCode(db.Rows[0][0].ToString(), db.Rows[0][1].ToString());

if (b)
{
cl.AddParameter("@install", db.Rows[1][1].ToString());
for (int i = 2; i < db.Rows.Count; i++)//
{
cl.AddParameter("@" + db.Rows[i][0].ToString(), db.Rows[i][1].ToString());
}

db2 = cl.SelectToProc(db.Rows[1][0].ToString(), "");

}//修改成功,添加成功,删除成功

DataToXml dx = new DataToXml();
UTF8Encoding utf8 = new UTF8Encoding();

Byte[] encodedBytes = utf8.GetBytes(dx.DataTableToXml(db2));
String decodedString = utf8.GetString(encodedBytes);

//UrlEncode(dx.DataTableToXml(db2), Encoding.UTF8);
return decodedString;
}
...全文
125 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
宝_爸 2013-05-03
  • 打赏
  • 举报
回复
lz描述的不是很清楚,我现在假设不适用线程是这样的。 for (int i = 0; i< 10; i++) { string result = getDataFromProc(dataTableName); Dosomething(result); } 改成线程池 System.Threading.WaitCallback waitCallback = new WaitCallback ( MyThreadWork ); for(int i = 0;i<10;i++) { ThreadPool.QueueUserWorkItem ( waitCallback, dataTableName ); } public static void MyThreadWork ( object state ) { string dataTableName = state as string; string result = getDataFromProc(dataTableName); Dosomething(result); }
  • 打赏
  • 举报
回复
WaitCallback只能带一个object类型的参数,没有任何返回值。可以利用委托。

110,539

社区成员

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

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

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