|
You're not going to get an answer to that question here. The pRobability of abuse of such a technique is high and were not going to be part to that.
That being said you can find the answer to that question on the web after a simple Google search. I leave it up to you to figure out what to search for.
|
|
|
|
|
|
Good afternoon, I wanted to share with you a problem I'm having, which you can not find a convincing answer.
What is the problem?
It is that database connections are many active and AWAITING COMMAND status SLEEPING, and every time I run a new query to the database, a new connection is added, I see this with sp_who2 from Management Studio.
What is the scenario?
An application of three layers (BUSINESS, DATA and PRESENTATION) which, because it is a client-server application, data is accessed by a Windows service that raises a
console application that instantiates a class that encapsulates access to data and records on the server so it can be accessed through Net Remotting.
Proper operation, can access data and execute everything correctly. At each attempt to access data, I end with Connection.close () method.
The problem is that despite using Connection.close () connections do not die and are all state SLEEPING, and there comes a time when you can no longer accumulate more
and SQL SERVER rejects the connection attempt, because limit was reached in the POOL.
Even if I close the main application, connections are maintained, but if I close the application that instantiates the object, all connections are closed.
Anyone has been in a similar situation? any suggestions?
|
|
|
|
|
Are you disposing the connection objects?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Hello, thanks for answer. Yes i'm closing the connection every time I use it, in the finally block of try...catch
The results are the same.
|
|
|
|
|
No, not Closing. Are you calling Dispose on the connection objects?
Are you creating a new Connection object on every request, executing your query, and then Disposing the connection??
Or are you opening a connection at the start of your application and leaving it open the entire time your app is running?
|
|
|
|
|
Hi. I'm only calling connection close method, not disposing the object. I will try it and let you know if that works. Thanks.
|
|
|
|
|
Hi again, i've implemeted the Dispose method on the conection object and it's seems to be the solution, first close, then dispose.
I also made some changes, before the Windows Service starts a mini app than register the remote object in a tcp channel, now the Windows services does all the work, and no extra app is needed, so, the solution copuld be bay one of thos changes or a combination.
Anyway, thanks!
|
|
|
|
|
Juan Topo wrote: The results are the same. Ehr.. no, it ain't
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
You can take a help of system administrator for to access remotely
Sankarsan Parida
|
|
|
|
|
Hello. I'd like to learn C# and ASP.Net as a beginner with the aim to become a professional one day and hopefully start a career.
My question is do you recommend I use Visual Studio Online Basic or Visual Studio Express 2013? Or is there not much difference for a beginner like me?
My PC OS is Windows 7 64-bit
Best Regards, Adam.
|
|
|
|
|
I'd recommend the Express-version; Visual Studio really benefits from being a "rich client".
The biggest difference will be the architecture in the applications one writes; are you primarily interested in developing Web-applications, Windows-applications or targetting "devices"?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Many thanks for the feedback. I'm interested in developing both Web-applications using ASP.Net and Windows-applications using C#.
|
|
|
|
|
I'd recommend focussing on one of the two; also, IIRC, only one of the Express versions can be installed at a time.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
|
adamhill9 wrote: this web page suggests both Express versions can be installed You're right, multiple sites suggest so. Good one
Some additional resources from Microsoft that might be handy;
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Great stuff, thanks for those links they will be a great place to start.
|
|
|
|
|
Eddy Vluggen wrote: only one of the Express versions can be installed at a time. No, they happily co-exist on the same system. VS2013 Express[^] has 3 versions: Desktop (C++, C#, VB.NET), Web (ASP.NET) and Windows (appstore and phone).
|
|
|
|
|
Nice one, thanks for the confirmation.
|
|
|
|
|
|
Actually, you're looking at two different things. Visual Studio Online is not the Visual Studio IDE in the cloud. There is one feature of VSO that does enable you to edit code in the cloud, but it's only for websites deployed to Azure. See: Visual Studio Online "Monaco" videos on Channel 9.
Visual Studio Online is essentially a cloud implementation of Team Foundation Server with some additional cloud-based functionality. You should go ahead and create a free Visual Studio Online Basic account. That'll give you a place in the cloud for online source control. As you learn to code, you should also learn how to work with source control.
Express for Windows Desktop is the IDE heir to what was once Visual Basic Express, Visual C# Express, and Visual C++ Express. All three of those products (2010 era) are now what comprises Express for Windows Desktop. It's the best starting point for learning to code with any of those languages, and it connects to Visual Studio Online. For ASP.NET development, you'll need a separate Express product: Express for Web.
Check out: Get Started: Create your app to work with VSO
And: Getting Started with Visual C# and Visual Basic
Rob Caron MSFT
|
|
|
|
|
Many thanks this is great info to know.
|
|
|
|
|
Agree with others. Go with Visual Studio Express. If you need cross platform option(some people use VMs to run other OS), use MonoDevelop[^]. FYI one more open source IDE SharpDevelop[^] there as an alternative.
|
|
|
|
|
For a start to learn then you can start programming from anyone of basic or express 2013
Sankarsan Parida
|
|
|
|
|
Hey, all. Been after this one a few days and it's driving me crazy. I've refactored several times based on information I've found on the net (i.e. event handlers, circular references, etc) but I'm just not getting anywhere.
What I have is a generic hierarchical data structure that is distributed over a LAN via TCP. The concept was that I wanted to be able to share variables between applications over networked machines using a common protocol. The problem is whenever I run the thing and watch the process with Process Explorer, I can see a steady increase in Physical Memory usage (WS Private). I have a test application that accesses the nodes in the tree several times a second and can watch it climb (app consumes about 50 MB of memory when idle and then climbs at about 300 K per second). By playing around and commenting/uncommenting various blocks of code, I've narrowed the problem down to whenever the nodes in the tree are being accessed. At first I was certain that the problem was in the implementation of my object hierarchy because I had circular references (children had a reference to their parents) and figured that was messing up GC. But then I redid the implementation to remove that relationship and it's still happening. This is really driving me nuts.
Here's some (abridged) code. I can provide more if needed but don't want this to turn into a novel outright.
First, the object hierarchy:
Starts with a MustInherit base class: Node
Node is just a basic node in the tree. Everything that lives in the tree must inherit from this class.
ContainerNode:
Inherits from Node. It has an internal sortable dynamic list of Node instances and includes methods necessary to traverse that list (HasChildren, etc).
Cluster:
Inherits from ContainerNode. A Cluster is a collection of related nodes. A Cluster is the top most object in the tree. A Cluster contains a list of Groups and DataNodes.
Group:
Inherits from ContainerNode. A Group is a collection of related nodes within a Cluster. A Group contains more Groups and DataNodes.
DataNode:
Inherits from Node. A DataNode is a variable "leaf" item on the tree. It can be any kind of basic data type (string, integer, etc, etc).
The whole tree is accessed through a class called Agent. The Agent provides the methods necessary to add and remove nodes and set their values. It also sends changes in the tree out to the network and receives requests from connected clients over the network to modify the tree.
Nodes on the tree each have a signature, which looks pretty similar to a directory path in Linux (/Cluster/Group/Group/DataNode). I don't deal with relative paths.
So after a bunch of screwing around I've traced the problem down to whenever I access a node on the tree. Up at the App level, I have the following:
If (m_Service.NodeValue(Path.ToString & "/ParamID") = ParamType) Then
Return m_Service.NodeValue(Path.ToString & "/AutoCalc")
End If
This corresponds to a property in a class called Service, which exposes the Agent and everything else to client applications (this whole thing is packed into a class library).
Public Property NodeValue(ByVal Path As String) As Object
Get
Return m_Agent.NodeValue(Path)
End Get
Set(ByVal value As Object)
m_Agent.NodeValue(Path) = value
End Set
End Property
Within Agent, there is the following:
Public Property NodeValue(ByVal Path As String) As Object
Get
Try
Return DirectCast(Me.GetNode(Path), Tree.DataNode).Value
Catch ex As Exception
Return Nothing
End Try
End Get
Set(ByVal value As Object)
Try
Dim N As DataNode = DirectCast(Me.GetNode(Path), Tree.DataNode)
If (N IsNot Nothing) Then
If (N.NodeVal <> value) Then
N.NodeVal = value
If (Me.SuppressEvents = False) Then
OnValueChanged(N.Signature.ToString, value)
End If
End If
End If
Catch ex As Exception
End Try
End Set
End Property
GetNode does this:
Public Function GetNode(ByVal Path As String) As Node
If (m_Nodes.IsEmpty) Then
Return Nothing
End If
If (String.IsNullOrEmpty(Path)) Then Return Nothing
If (Path.Equals("/")) Then
m_Nodes.First()
Return m_Nodes.Current
End If
If (Path.Substring(0, 1).Equals("/")) Then
Return AbsolutePath(Path)
End If
Return Nothing
End Function
Private Function AbsolutePath(ByVal Path As String) As Node
Path = Path.TrimStart("/")
Dim Data() As String = Path.Split("/")
If (Data.Length > 0) Then
Dim Index As Integer = m_Nodes.GetItemIndex(New SearchNode(Data(0)))
AbsolutePath = m_Nodes.AtIndex(Index)
If ((AbsolutePath IsNot Nothing) And (Data.Length > 1)) Then
For X As Integer = 1 To Data.Length - 1
If (AbsolutePath IsNot Nothing) Then
If (AbsolutePath.HasChildren) Then
AbsolutePath = DirectCast(AbsolutePath, ContainerNode).Child(Data(X))
Else
Return Nothing
End If
Else
Return Nothing
End If
Next
End If
Return AbsolutePath
End If
Return Nothing
End Function
Now, through testing, I've found that calling GetNode is enough to make the memory leak occur. That means no events firing and nothing else special, just a simple GetNode, which returns the Node instance back to the caller.
It seems to me that this should be something that the language should be able to handle, so I'm either missing something fundamental or I'm nowhere near as knowledgeable as I'd like to believe.
I greatly appreciate any help, hints, or insight you can provide.
Thanks much.
|
|
|
|