|
jugs0101 wrote: So a quick question is:
If an object is not 'Disposed' and not set to Nothing (null), does the GC tidy it up at some point if it goes out of scope?
Normally yes but it's up to the garbage collector to decide when exactly it's going to be removed from the memory.
Also for some objects you have to call the dispose method (check if the object has the method and call it when you don't need the object anymore) otherwise they keep having a reference and will not be cleaned up bye the GC.
|
|
|
|
|
Tom Deketelaere wrote: otherwise they keep having a reference and will not be cleaned up bye the GC.
This is not true. Objects implementing IDisposable are not treated specially by the runtime. If a Disposable object goes out of scope, it will be garbage collected just like any other object. The reason to call the Dispose method is simply to release the resources used by the object (usually unmanaged resources such as handles for files, GDI objects, or other such things) immediately instead of waiting for the garbage collector to do it.
|
|
|
|
|
Some more thoughts:
1.
AFAIK object finalizing, when needed, is handled in a separate thread, running at a lower priority. This can fail for several reasons: system too busy to ever get that thread to do anything, exception thrown in a finalizer method, etc. When any of these happen, the objects to be finalized never get freed.
2.
it is often tempting to collect objects, say in a static List< myType> for statistical or other purposes. If handled with insufficient care, such lists keep growing and prevent the objects from ever being freed; one should either make sure to always remove the object from hidden lists, or only put WeakReferences into such lists.
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
|
|
|
|
|
Thanks Luc
We had considered that the system might be too busy to perform the GC. Not sure what we can do about that.
Does GC.Collect() force the GC to tidy up do you know?
Thanks
Jugs
|
|
|
|
|
It doesn't force the GC to Collect at that time. It pretty much just makes a suggestion to the GC that "now might be a good time to Collect".
|
|
|
|
|
Hi,
jugs0101 wrote: Does GC.Collect() force the GC to tidy up?
Yes it causes the GC to run, meaning:
1. all your threads get blocked
2. all your objects get sorted into alive, dead-to-be-finalized, and dead-to-be-collected categories; this is rather expensive
3. all your threads get unblocked
4. the collector thread gets launched (not sure it is separate, I guess it is)
5. the finalizer thread gets launched
So GC.Collect() is expensive, you shouldn't call it all the time. Also calling it explicitly disturbes the built-in statistical algorithms, so it may result in much worse behavior (that is from what I've read about it, I tend to organize and clean up may code so I never even want to call GC.Collect; but then I also avoid third-party code!).
Even when calling GC.Collect(), that does not solve some of the issues, e.g. those I mentioned in my earlier message.
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
|
|
|
|
|
Dear Sir!
I have two tables students and subject tables with fields( student_Id,Name),(Subject_ID,Subject,Student_ID)
but in my VB.Net I have two combo box for selecting values and inserting, I just want to insert on value ID and want the both tables to be linked.
|
|
|
|
|
So what is your question?
The linking off the tables you have to do in your database. (on the field 'student_id' in both tables)
The combobox in .NET has 3 property's that might help you:
- Datasource (a datatable containing the values to be displayed in the combobox)
- Displaymember (wich column of the datatable will be displayed in your case probably 'Name' or 'Subject')
- Valuemember (wich column is the actual value of the combobox, in your case probably 'student_id' or 'subject_id')
Without more explanation of what you want exactly nobody here is going to be able to give you a complete answer.
|
|
|
|
|
HI to all,
Could anyone please give me the important steps to be done in order to include vlc player in a project(which will be deployed).
What I did is include a COM components(for vlc player).[I am not sure what COM components,but it works in my system] and ran it,it runs fine. But after I deploy my project it didn't run. I am sure there has to be some settings to be done. Please help me out with. I am a beginner.
Thanks in advance
I am a beginner
|
|
|
|
|
Not sure about this but if the computer that you are installing it on doesn't have vlc player installed it isn't going to work (at least not just 'out off the box').
You'll need to register the com component, in order to do this you can set it in the property's off the component's dll (I think) in your setup project.
|
|
|
|
|
In VB, how does one obtain the "Type" info of a file? For example, in a Windows file dialog (Details view) one of the columns provides the native application info for each file. The Type info for a .fun file is "Kool Moves Document" - .doc's Type is "MS Word Document," and so on. How do I get this info for a ListView control in my application?
|
|
|
|
|
SHGetFileInfo[^] >> SHGFI_TYPENAME
TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L
%^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2
W_AD`EPABIKRDFVS)EVLQK)JKSQXUFYK[M`UKs*$GwU#(QDXBER@CBN%
Rs0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-iTV.C\y<pjxsg-b$f4ia>
--------------------------------------------------------
128 bit encrypted signature, crack if you can
|
|
|
|
|
Thanks! Looks complicated, but will get it phiggered out.
|
|
|
|
|
If you aint good in API then you can do this through registry
TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L
%^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2
W_AD`EPABIKRDFVS)EVLQK)JKSQXUFYK[M`UKs*$GwU#(QDXBER@CBN%
Rs0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-iTV.C\y<pjxsg-b$f4ia>
--------------------------------------------------------
128 bit encrypted signature, crack if you can
|
|
|
|
|
Hi All,
I am using the following code to send EMail
Public Function SendmailUsingSmtpClient(ByVal destinationEmail As List(Of String), ByVal subject As String, ByVal body As String) As Boolean ', ByVal pblnNotify As Boolean) As Boolean
'Dim Email As New System.Net.Mail.MailMessage
Dim mailClient As SmtpClient = Nothing
' Dim smtp As New System.Net.Mail.SmtpClient(BLLmdlCommon.SmtpServer, BLLmdlCommon.SmtpServerPort)
Dim cred As NetworkCredential = Nothing
Dim smtpserver As String = ""
Dim SendPassword As String = ""
Dim fromMail As String = ""
Dim smptServerPort As String = ""
Dim SendUserName As String = ""
Try
SendPassword = System.Configuration.ConfigurationManager.AppSettings("fromemailpassword").ToString()
fromMail = System.Configuration.ConfigurationManager.AppSettings("FromEmail").ToString()
smtpserver = System.Configuration.ConfigurationManager.AppSettings("smtpserver").ToString()
smptServerPort = System.Configuration.ConfigurationManager.AppSettings("SmtpServerPort").ToString()
mailClient = New SmtpClient(smtpserver, smptServerPort)
' mailClient.EnableSsl = True
mailClient.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis
mailClient.UseDefaultCredentials = False
cred = New NetworkCredential(fromMail, SendPassword)
mailClient.Credentials = cred
For i As Integer = 0 To destinationEmail.Count - 1
mailClient.Send(fromMail, destinationEmail(i), subject, body)
Next
Return True
Catch ex As Exception
Throw ex
Return False
End Try
End Function
It is working fine at local. When i check at production server, it is crashing, Cannot get IIS pickup directory
Can you tell me something , Whay should i do to get rid of this problem?
Thanks
|
|
|
|
|
am using vb.net
i got error to inserting the values
error is
ERROR [HY000] [DataDirect][ODBC OPENEDGE driver][OPENEDGE]Invalid number string (7498)
my code
<code>
Dim sVechicleQSLString As String = "insert into PUB.RCMIFT values(3176,842,1663,1,'Salik','Salik road toll','BDMON','Vehicles','A',0,0,1,0,'01/01/1996',0,'',0,0,5,0,2,0,4.40,0,0,0,0,0,0,0,0,0,'','',0,0,0,0,'',0,40.00,0,0,0,0,176.00,'support','',0,0,0,'03/10/2009',11.26,'BDMON','','',03/10/2009,11.26,'',0,0,0,0,0)"
Dim conn = New System.Data.Odbc.OdbcConnection("Dsn=BPB;uid=CWM;host=102.168.0.196;port=6500;db=rental;password=")
conn.Open()
Dim sfcomVehicleSearch As New System.Data.Odbc.OdbcCommand(sVechicleQSLString, conn)
sfcomVehicleSearch.ExecuteNonQuery()
conn.CLOSE()
Dim da As New System.Data.Odbc.OdbcDataAdapter()
sVechicleQSLString = "Select * from PUB.RCMIFT ORDER BY RCMIFT-ID"
sfcomVehicleSearch = New System.Data.Odbc.OdbcCommand(sVechicleQSLString, conn)
da.SelectCommand = sfcomVehicleSearch
Dim ds As New DataSet()
da.Fill(ds, "Rental.vsrfvr")
dgvFill.DataSource = Nothing
dgvFill.DataSource = ds.Tables(0)
End Sub
</code>
pls help me
Thanks
Vicky
|
|
|
|
|
Use parameters.
From the error I can only think that somewhere in that mess off numbers there is one badly formated.
If you use parameters they will take care off the formating and avoid these kind off errors.
(If you don't know what parameters are look into sql injunctions (google it))
Also although its a correct sql statement, better practice is to include the column names into your sql.
example: INSERT INTO [tablename] ([columnname],[columnname],...) VALUES (?,?,...)
And a better subject might be in order as well. Hi all doesn't really say much and many people here will skip the post because off it.
|
|
|
|
|
Take a look at the last date, just after 'BDMON' -you have not enclosed it in quotes.
I would also read up on SQL INJECTION ATTACKS as your code is wide open to abuse.
Bob
Ashfield Consultants Ltd
Proud to be a 2009 Code Project MVP
|
|
|
|
|
Iv got 2 sql tables..
table1 - date, runNo, coop
20090101 C1234 B0018
20090211 C1234 B0150
20090228 C5678 BRT10
20090228 C5678 BP001
table2 - coop, runNo
B0001 C1111
B0002 C2222
B0018 C1234
B0144 C5555
B0150 <null>
BRT10 <null>
BP001 C5678
BP110 C8888
I have to check in table1 for coop wif runNo wether the coop in table2 got that runNo and display the one that dont have runNo like the one in table1. Table1 is data that i extract from a file. all the list in that file means that coop <brt10> have files for running number <c5678>. so for table2 are the list of files in portal. so i must checked wether coop in portal got the rite file that is for table2, coop<brt10> must have runNo <c5678>.. if the coop in portal (table2) dont have that file(runNo) than i have to display the coop that dont have that runNo. I dont how to compare bcos its not comparing the 1st row in table1 to 1st row in table2. the flow is to search data in 1st row of table1 within table2..
|
|
|
|
|
Not sure I understood correctly, but it seems a simple SQL statement can do it, by joining (JOIN) both tables on their coop fields, then filtering (WHERE) on different runNo fields.
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
|
|
|
|
|
thank u so much.. never think of join the tables.. do u have any link that explain on how to use JOIN? iv been trying to google it but most of the explanation r not clear.. tq
|
|
|
|
|
|
got it.. thanks a lot
|
|
|
|
|
This is a snippet of my code.
Declare Function ReadProcessMemory Lib "kernel32" _
(ByVal hProcess As Long, _
ByVal lpBaseAddress As Long, _
lpBuffer As Any, _
ByVal nSize As Long, _
lpNumberOfBytesRead As Long) As Long
Dim bytearray As String * 65526
Dim GetWindowsFormsID As String
Call ReadProcessMemory(processHandle, bufferMem, ByVal bytearray, size, lp)
GetWindowsFormsID = ByteArrayToString(bytearray, retLength)
Function ByteArrayToString(bytes As String, length As Long) As String
Dim retValStr As String
Dim l As Long
retValStr = String$(length + 1, Chr(0))
l = WideCharToMultiByte(CP_ACP, 0, bytes, -1, retValStr, length + 1, Null, Null)
ByteArrayToString = retValStr
End Function
I am sure the bytearray is not empty. But I don't know how to convert it to String. I use WideCharToMultiByte but it's failed. What am I doing wrong?
|
|
|
|
|
OK, this is solved (and also this question). The issue is actually convert WideChar string into ANSI string. I use CopyMemory instead of WideCharToMultiByte.
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Function ByteArrayToString(bytes As String, Length As Long) As String
Dim retValStr As String
retValStr = String(Length - 1, Chr$(0))
CopyMemory ByVal StrPtr(retValStr), ByVal bytes, Length * 2
ByteArrayToString = retValStr
End Function
modified on Wednesday, March 11, 2009 1:04 AM
|
|
|
|
|