比如有个 DBClass.cs 里面2静态方法,1个获取DataSet,1个执行Sql语句如果这个 DBClass.cs 应用在WEB项目里. 多个用户在客户端请求的时候 在DBClass.cs静态方法里发生异步访问就是必然的了(多个用户在同样的时间访问同一个静态方法).那么,现在我的问题是:他们会冲突吗?如果不冲突,是因为什么? 如果按普通道理来看 怎么着他们都是应该冲突的.除非能有一种什么什么机制事先就防范好了这样的冲突...当然,这关系到很多知识,比如静态方法的参数是静态的吗?
比如静态方法的成员是静态的吗
比如静态方法执行的时候 另外一个请求也来了该怎么办? (如果按对象的方法肯定是new的新对象里的方法,这个很好理解.但静态的怎么理解?)

解决方案 »

  1.   

    WebService 本地化调用,WebService机制本来就是异步调用!
      

  2.   


    在WEB项目中的同时有多个用户同一时间访问的时候当然也有先后的,只不过是服务器自动按消息队列排好了,这个你不用但心啊,DBClass.cs中的方法无非就是取数据,修改数据了,如果它们之间可能相互影响的话,你就应该考虑锁的机制了或是用多线程实时跟踪就像游戏数据处理那样,不过WEB中这种情况很少的,好多都是相互不影响的。这个是我的个人理解,不一定正确。。
      

  3.   

    楼主要清晰明白静态方法的作用是什么?
    静态方法是:仅解决问题,而不涉及资源分配问题。
    例如:用一个静态函数实现数学计算功能,或字符串长度计算功能等-当然这些都是简单功能。
    一般math中都是静态方法,它仅解决你传入数值-需要静态函数实现你所要功能。如果你的函数中涉及到资源再分配的情况,则不能使用静态方法来实现。
      

  4.   

    楼上的是正解, 这涉及计算机的基本执行原理, web访问时每个session都会有自己的线程, 所以就有自己的栈,而执行方法是会复制代码到自己线程中的栈(这里是个比喻), 所以每个线程都有这个方法的副本, 自己执行自己的所以不会乱.
      

  5.   


    曾经有很多在.net 1.1中排队的东西在.net 2.0中真正作为多线程并行执行了。
      

  6.   

    谢谢,我已经明白了.但相关知识我缺太多了。看来我得补一下 进栈出栈 函数 在内存是什么,变量在内存里是什么 等等知识.不知道有没有合适的书推荐? 操作系统? 还是其他什么.  <数据结构> ? 如果是这2本的话  有通俗点的书推荐吗? 就是不要太过语言简练化 而要形象比喻化的书.我最基础的计算机学科只学过C语言基础.