2011-02-23 69 views
1

在我的ASP.NET Web服务中,我已经包含了一个模块,它们是公共声明变量。他们会线程安全吗?同时通话时他们会混淆吗?ASP.NET Web服务+模块+公共变量=线程安全吗?

这些变量大多DatsSet,数据表和SqlDataAdapter的..

模块的部分代码:


Imports System.Data.OleDb 
Imports System.Diagnostics 

Module modCommon 

    Public bDoLog As Boolean 
    Public sCurrentODBC As String 
    Public cn As SqlConnection 
    Public Query1ds As DataSet 
    Public Query1 As DataTable 
    Public Query1adapter As SqlDataAdapter 

@scripni

谢谢,因为我不跟家族性你的建议,我会在本地移动一切。

此外,将以下变量是线程安全的?:


[ToolboxItem(False)]_ 
Public Class Service1 
    Inherits System.Web.Services.WebService 

    Dim sName As String 
    Dim sCurrentPath As String 

    [WebMethod()]_ 
    Public Function Capture(ByVal sPath As String) As String 
      sName = "Joe" 
    End Function 
End Class 

回答

0

如果您使用的网络服务比对,您将有并发性问题,当多个服务将尝试访问相同的资源, SqlConnection定义了一个你不想共享的资源。

你应该确保你没有同时调用属性(例如通过用getter/setter包装字段并在这些方法中实现锁定),或者通过将代码移动到类中并实例化该类只要你需要它。