导航
  • 主页
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm
  • WPF
  • 问答

急问一个线程池的问题,困惑很久了!

chsilence 中建材集团进出口公司 CTO/CIO/技术副总裁/总工程师  2005-07-05 10:41:48
我用线程池来测试URL是否通,为什么结果不正确,请问
(1)为什么同样的URL,有时请求有回应,有时会出错,什么原因?
(2)怎么控制线程池中线程的数量,超过了一定的值就会报没有自由线程可用,怎么解决?(注:不想修改CorSetMaxThreads的值)
(3)如果不用线程池,请问用线程怎么控制

谢谢各位!

代码如下:

using System;
using System.Net;
using System.Threading;

namespace ThreadPoolDemoConsole
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
private static string[] str ={"http://www.sina.com.cn","http://www.163.net","http://www.sohu.com"};//URL随便
private static void test(object obj)
{
string s="";
lock(str)//这个地方我用LOCK(THIS)不知道为什么老报错:(
{
try
{
// Create a new WebRequest Object to the mentioned URL.
WebRequest myWebRequest=WebRequest.Create((string)obj);


// Set the 'Timeout' property in Milliseconds.
myWebRequest.Timeout=2000;

WebResponse myWebResponse=myWebRequest.GetResponse();

s = s+" "+(string)obj+" "+myWebResponse.ResponseUri.ToString();
Console.WriteLine(s);

}
catch(Exception ex)
{
s = s+" "+(string)obj+" "+"erro";
Console.WriteLine(s);
}
}

}
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
for(int i=0;i<13;i++)
{
int k = i%3; //为了有多个URL,为了方便,使用重复的URL

ThreadPool.QueueUserWorkItem(new WaitCallback(test),str[k]);
}
Console.ReadLine();
}
}
}
...全文
250 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Knight94 2006-05-08
lock部分用mutex来替换,例如:
private Mutext mLock = null;
//in your thread function
if( mLock == null ) mLock = new Mutex();
mLock.WaitOne();
//Enter lock region
//.....

mLock.ReleaseMutex();//Leave lock region
回复
z109876543210 2006-05-08
帮你顶,第二个问题我也想知道,我想可不可以在回调函数最后那里执行一下

WaitHandle.WaitAny(IManualResetEvent);如果真就执行一个函数把一个新线程放进去。
回复
crossrowman 2005-07-27
lock(str)//这个地方我用LOCK(THIS)不知道为什么老报错:(
static方法不能使用非static成员
回复
okyzx 2005-07-27
帮顶一下,肯定是同步异步的问题,我也正在看:-)
回复
chsilence 2005-07-05
各位看看呀
回复
chsilence 2005-07-05
??????
回复
发动态
发帖子
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
社区公告

全世界最好的语言,没有之一.