在我的c#应用程序中,多个客户端将访问同一个服务器,以便在代码写入的同时处理一个客户端。在代码中,我使用了Moniter类以及队列类。此代码影响performance.if我使用Monitor类,那么我应该从代码中删除队列类。c#中的线程监视器类#
有时我的远程服务器机器,我的应用程序作为服务运行时是完全down.is下面的代码是reasond背后,所有客户端进入队列,当我检查netstatus -an命令使用命令提示符8个客户它表明50个连接持有时间等待......
下面是我的代码,其中客户端存取权限的服务器...
if (Id == "")
{
System.Threading.Monitor.Enter(this);
try
{
if (Request.AcceptTypes == null)
{
queue.Enqueue(Request.QueryString["sessionid"].Value);
string que = "";
que = queue.Dequeue();
TypeController.session_id = que;
langStr = SessionDatabase.Language;
filter = new AllThingzFilter(SessionDatabase, parameters, langStr);
TypeController.session_id = "";
filter.Execute();
Request.Clear();
return filter.XML;
}
else
{
TypeController.session_id = "";
filter = new AllThingzFilter(SessionDatabase, parameters, langStr);
filter.Execute();
}
}
finally
{
System.Threading.Monitor.Exit(this);
}
}
你的队列是什么类型?不建议锁定(请参阅:http://www.albahari.com/threading/part2.aspx#_Locking) – weismat 2012-03-29 08:38:50
我像这样定义了我的队列....队列队列=新队列(); –
user703526
2012-03-29 09:11:45
为什么不使用'lock(this){...}',它比'Monitor.Enter(this)短;尝试{...}终于{Monitor.Exit(this); }'。 – 2012-03-29 09:41:47