|
It's not thread-safe because you're sharing a single StringBuilder object, without synchronizing access to the shared state.
Imagine two threads calling WriteString at the same time. You could end up with:
T1: Clear
T2: Clear
T1: Append "Message from T1"
T2: Append "Message from T2"
T1: Output "Message from T1Message from T2"
T2: Output "Message from T1Message from T2"
Or:
T1: Clear
T1: Append "Message from T1"
T2: Clear
T2: Append "Message from T2"
T1: Output "Message from T2"
T2: Output "Message from T2"
Or:
T1: Clear
T1: Append "Message from T1"
T2: Clear
T1: Output ""
T2: Append "Message from T2"
T2: Output "Message from T2"
Or any other sequence of calls which could result in incorrect output.
Also, the StringBuilder class isn't thread-safe, so you could end up corrupting the internal state of the object and getting weird output or exceptions.
And that's before you consider the possibility that the JIT compiler is free to reorder operations if doing so doesn't change the outcome of the code on a single thread:
C# - The C# Memory Model in Theory and Practice[^]
C# - The C# Memory Model in Theory and Practice, Part 2[^]
If you really needed to use a static instance of the StringBuilder class, you'd either need to add a lock block around the access, reducing the performance of your code; or you'd need to use Thread Local Storage[^] to have a single instance of the class per thread.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Enlightening ! thanks, Bill
«There is a spectrum, from "clearly desirable behaviour," to "possibly dodgy behavior that still makes some sense," to "clearly undesirable behavior." We try to make the latter into warnings or, better, errors. But stuff that is in the middle category you don’t want to restrict unless there is a clear way to work around it.» Eric Lippert, May 14, 2008
|
|
|
|
|
By default the GridView inplace editor has the mouse wheel handler which allows to change the data inside by scrolling the mouse wheel
Could you please suggest how to cancel the mentioned mouse wheel handler
|
|
|
|
|
You already asked this question in QA. Don't repeat the same question in multiple forums. It just hampers efforts to get a colaborated answer.
|
|
|
|
|
Hello,
I am using 'FileSystemWatcher.enableraiseevents' to get the events when a directory, or file in a directory changes. I have used FileSystemWatcher.Error to catch the errors. These are the errors logged in my system.
Exception : System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out, Hash code: 28048521, Type: System.IO.ErrorEventArgs, To string: System.IO.ErrorEventArgs
Exception : System.ComponentModel.Win32Exception (0x80004005): The operation completed successfully, Hash code: 1658455, Type: System.IO.ErrorEventArgs, To string: System.IO.ErrorEventArgs
Exception : System.ComponentModel.Win32Exception (0x80004005): Unknown error (0x490062), Hash code: 27762102, Type: System.IO.ErrorEventArgs, To string: System.IO.ErrorEventArgs
My question is what is the meaning of these errors ?
Why I am getting these errors ?
Please help me.
|
|
|
|
|
srikrishnathanthri wrote: Please help me. I'll copy/paste every answer from the same question on SO here, would that help?
--edit
To explain why I'm not so very happy with this question; imagine taking 10 minutes to write a long answer with lots o' detail - just to hear you say "I already know". You could have included a link to your question on SO so that I am not just repeating other answers.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
modified 22-Jun-16 8:08am.
|
|
|
|
|
I have given the complete information of exception which I am getting from Exception.ToString()
In this case I cant get errors in debug. It's logged in run time randomly.
I am searching at least 30 minutes before posting any questions in the forum.
|
|
|
|
|
srikrishnathanthri wrote: In this case I cant get errors in debug. It's logged in run time randomly. It may be caused by lots of messages from the OS, which aren't there as soon as you halt execution and go to debug.
FileSystemWatcher.Error Event (System.IO)[^]
The operation timed out, would mean that the OS started an operation but did not get informed of its completion; which in turn could cause the next errors. You might also want to read this[^] thread from SO.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Hello,
I planning to use Microsoft Enterprise library 5, for connecting Microsoft Access and perform asynchronous operations. I found that ODBC can be achieved by using GenericDatabase of Microsoft.Practices.EnterpriseLibrary.Data But in that method I am getting a error as "The database type "GenericDatabase" does not support asynchronous operations"
Is it possible to perform asynchronous operations using Microsoft.Practices.EnterpriseLibrary.Data.GenericDatabase ?
If not what are the possible alternatives for me ?
Please help me.
|
|
|
|
|
srikrishnathanthri wrote: If not what are the possible alternatives for me ? According to the documentation, you could use SQL Server.
Asynchronous data access is not supported by all ADO.NET data providers. The Database class exposes a Boolean property named SupportsAsync that you can test to check at run time if asynchronous operations are supported. If this property returns false, any asynchronous methods you call will throw an InvalidOperationException. In Enterprise Library 5.0, the only database type that supports asynchronous operation is the SqlDatabase class.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
srikrishnathanthri wrote: Is it possible to perform asynchronous operations using Microsoft.Practices.EnterpriseLibrary.Data.GenericDatabase ?
What part of
The database type "GenericDatabase" does not support asynchronous operations did you not understand?
|
|
|
|
|
hi
any one can please help me to send multiple sms
from click button with excel file attachement in c#.
|
|
|
|
|
An Excel file as an attachment to an SMS message?
Chances are really good that the excel file size will exceed the limits set by mobile providers.
|
|
|
|
|
Not to mention that SMS doesn't support attachments and the message size is limited to 256 chars.
|
|
|
|
|
Um...Are you sure?[^]
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
SMS DOES support attachments. Ever send a picture over SMS? I have, lots of times.
The attachment size, at least on Verizon, is limited to 1.2MB.
|
|
|
|
|
|
Hello,
I have a requirement of getting updated/inserted values in SQL server 2008 using CLR method. I read on net that “trigger is meant for validation also”, But I am not getting how to get the incoming values ( before or after update/insert) to the SQL server using .net assembly System.Data.SqlClient , SqlDataReader method.
Is it posible to get the updated/inserted values using dll ?
Please help me.
|
|
|
|
|
|
Hello,
I am looking for a password protection method in .net for connecting SQL server.
I have a requirement is to secure passwords from developers.
I know most of people will suggest me to use config file store password and some people say use windows authentication.
But my requirement is quite different, I don’t want to reveal password to developers. If I use it in config file the password will be known to developers. How to deny access to config file for developers and give to access to visual studio to that config file?
If I use Windows authentication there is risk of connecting directly to the database server by installing management studio or some other third party tools. Is there any way that will make windows authentication will work only if access from code?
|
|
|
|
|
You can't.
Because the connection string is just that - a string - the code that developers write needs to be able to access the "raw string" that is sent to SQL as part of the Connection event.
Because their code can access it, so can the developers.
All you can do is give them username / password combinations which are just sufficient to do their job (i.e. can insert, select, maybe update - but not add, edit, or create tables) and if you are still feeling paranoid log everything that user account does.
But even trying to prevent them having access when they clearly are going to need it says "I don't trust them" and that's not good for morale or the culture within the company. You may find it counterproductive in terms of retaining good staff - the ones you can trust...
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
|
There's a very easy method.
1. Use windows domain authentication
2. Run your application (or application pool, if IIS) under a service account. Give that service account the appropriate permissions on the database (which would have to be on a domain machine in this scenario). Don't give the password to your devs, set this up yourself (or whatever Security person you have assigned to account actions).
3. Make sure that dev accounts don't have access to the SQL server if you're worried about them using SSMS.
"There are three kinds of lies: lies, damned lies and statistics."
- Benjamin Disraeli
|
|
|
|
|
Nathan Minier wrote: There's a very easy method. ..still would rather see a DB created by a developer
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Not going to completely disagree, but this is one of those places where my dev self and my security self get into fistfights.
"There are three kinds of lies: lies, damned lies and statistics."
- Benjamin Disraeli
|
|
|
|