.Net 在WEB程序中使用 ThreadStatic其实还是会出现静态变量公用的情况

问题描述

[ThreadStatic]可以标注某个静态字段为每个线程提供独立的存储,单在实际应用中,我发现被标注[ThreadStatic]的静态变量还是可以被其他线程公用,这个问题怎么解决?在网上我也搜了类似的帖子,有人说是“线程池中的线程是可以被重用的,当你的请求结束后,当前线程结束,这时,其它客户端可能用你上次的线程!”,有没有高手给指点一下呢?怎么能不让重用之前的线程呢?

解决方案

解决方案二:
关于“新城池中线程”的问题是很自然的、我们为了性能而特意希望去重用线程的。不要本末倒置地去说什么“怎样不让重用之前的线程呢?”这类问题。不要用过于诡异的特性,用“正”的经过千锤百炼的,不就行了嘛。
解决方案三:
新城池中线程-->线程池中线程你可以看到,所谓ThreadStatic给你找了麻烦,然后你又去找“线程中的线程”的麻烦,这就是恶性循环。遇到这种情况,选择比较“正”的编程原则,放弃.net中的一些糟粕,就可以了。
解决方案四:
你可以看到,所谓ThreadStatic给你找了麻烦,然后你又去找“线程池中的线程”的麻烦,这就是恶性循环。遇到这种情况,选择比较“正”的编程原则,放弃.net中的一些糟粕(也就是放弃什么TrheadStatic),就可以了。

时间: 2024-10-25 07:12:23

.Net 在WEB程序中使用 ThreadStatic其实还是会出现静态变量公用的情况的相关文章

奇妙的.NET之Web程序中使用windows弹出框

web|window|程序 有一次做项目时,我突然发现了一个有趣的调用,在.net的WEB程序中,可以使用window包里的系统弹出框,运行时可以在服务器上弹出提示框,如果服务器端点击了弹出框的按钮,客户端IE才能继续运行,否则看上去的现象就象服务器的代码中有无限循环,始终运行一样.例子如下: if (MessageBox.Show("确定要删除?", "提示",MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamati

Web程序中网页间数据传递方法小结

web|程序|数据|网页 介绍 我们总是会遇到这样的情况,需要将数值从一个网页传递到另一个网页.在这篇文章中,向你展示了几种从一个网页向另一个网页传递数值的几种方法.在此例子中,创建的网页由一个文本控件和几个按钮控件组成.在文本框中输入的数据通过被标识在按钮控件中的不同方法从一个网页传递到另一个网页. Response.Redirect 让我们首先看一看如何使用Response.Redirect方法传递数据.这是它们之中最简单的方法.在文本框中输入一些数据,并且当你输入完成数据后,按下"Resp

javaweb-java web程序中,如何加载一个keystore 文件??(keystore文件在项目中)

问题描述 java web程序中,如何加载一个keystore 文件??(keystore文件在项目中) 比如我有一个xx.keystore 如果是java 程序的话,用file file=new file("文件路径"): 一定可以. 但是web'程序如何加载???求解...先在这里谢谢了. 解决方案 请问楼主问的是Https加载证书的例子?

web程序中映射网络驱动器 一直返回2202 求助到底哪里出了问题

问题描述 web程序中映射网络驱动器一直返回2202求助到底哪里出了问题 解决方案 解决方案二:usingSystem.Runtime.InteropServices;usingSystem.IO;usingSystem;publicclassWNetHelper{[DllImport("mpr.dll",EntryPoint="WNetAddConnection2")]privatestaticexternuintWNetAddConnection2(NetRes

在web程序中登录Gmail邮箱

问题描述 在一个web程序中,做一个页面,有一个下拉框,一个提交按钮,下拉框从数据库读取gmail账户供用户选择,用户选择一个账户后,点击提交,程序自动从数据库读取对应账户的密码登录到gmail!通过模拟gmail登录页面向gmail提交form数据,登录失败,请问有什么方法可以实现这样的需求,l而不需要用户打开gmail登录页面输入账户和密码,因为邮箱密码是对用户屏蔽的? 解决方案 java mail 发邮件即可啊http://wenku.it168.com/d_000596358.shtml

解决JSP开发Web程序中的中文问题

js|web|程序|解决|问题|中文     这段时间经常看到有人问到web开发中怎么中文总是?号.原因其实很简单,因为大家大多用的是tomcat服务器,而tomcat服务器的默认编码为 iso-8859-1(西欧字符).就是因为iso-8859-1(西欧字符)编码造成了我们经常看到?号. 方法一:最简单也是用的最多的方法. <%@ page language="java" pageEncoding="GBK" %> 或者<%@ page cont

在WEB程序中设置个性化,容错提示窗口

web|程序|容错 首先设计一个容错提示的窗口图像为如下: 关键HTML文本如下: "原因:<%=content[Int32.Parse(Request.QueryString["ms"])]%>" 然后在代码编辑窗口中添加如下不分: public class WebForm1 : System.Web.UI.Page { public string[] content; private void Page_Load(object sender, Sys

.net WEB程序中能用GetDiskSerial吗?怎么用求教。

问题描述 问题如题! 解决方案 解决方案二:ImportsSystem.ManagementpublicclassSystemDisk'获取硬盘IDPublicFunctionGetDiskID()AsStringTryDimsearcherAsManagementObjectSearcher=NewManagementObjectSearcher("SELECT*FROMWin32_PhysicalMedia")DimstrHardDiskIDAsString=""

C#.net web程序中 Clipboard.SetText出错 怎么解决

问题描述 我的是web程序出错提示为"在可以调用OLE之前,必须将当前线程设置为单线程单元(STA)模式.请确保您的Main函数带有STAThreadAttribute标记."