|
Yeah, to do a true insert of text into the file, you must rewrite the entire file. There's no other way to do it.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
I am running into a very frustrating problem with an application which works with threads.
Basically, what I am doing is creating a number of threads which I use for executing procedures. I cannot use the thread pool as the application does not suit itself to that sort of methodology (I will need to have greater control over the individual threads). For this reason, I am creating threads and keeping them around until I need them and then using them as needed.
Anyway, what I am seeing is that, if I have my threadStart procedure use a "while not terminated" type loop, the thread takes up lots of CPU time. For example, here is the ThreadStart:
private void doSomething()
{
while (fKillThread != true)
{
doSomethingElse()
System.Threading.Thread.CurrentThread.Suspend();
}
}
In theory, this should run ONCE and then suspend itself and take no further CPU time. However that is definitely not the case. Instead, these threads peg the CPU at 100%. It is almost as if it is continuously evaluating the while condition instead of doing it once and suspending.
So, why does .NET Thread.Suspend() not actually put the thread to sleep until it is called inside of a while loop?
If I eliminate the while loop and just call suspend(), it suspends and takes no CPU time at all.
Can anyone shed some light on what is going on here?
thanks
[edit]
I found this post that looks like the same thing is happening:
http://www.highdots.com/forums/visual-studio-net-debugging/thread-suspend-causes-100-cpu-2194189.html
this was from back in 2003 - anyone know if it was ever fixed or is .NET threading just broken until I upgrade to 2.0? Is it fixed there???
khariV
-- modified at 5:02 Thursday 3rd November, 2005
|
|
|
|
|
I checked you code in 2.0. Besides the fact that Thread.Suspend() is Obsolete is working fine and you have no CPU penalty.
|
|
|
|
|
thanks for the check. While I'm not sure when we'll officially move over to 2.0, it's good to know that when we do this issue will no longer be a problem.
You say that Thread.Suspend() is obsolete - what is the new methodology for suspending threads? Do they recommend you create/free them all the time (Im going to have potentially LOTS of processes, so I figured this would be a lot of overhead).
I know I can avoide using suspend() and instead switch over to events, but is there a new and improved thinking on this for the 2.0 world?
thanks again
khariV
|
|
|
|
|
|
If you have to use 1.1 try to set your thread as background one.This may eliminate the cpu consumption inside the loop.just a thought.
|
|
|
|
|
Based on the link you gave, it looks like Thread.Suspend is buggy. How about using some other mechanism to suspend and wakeup threads, like ManualResetEvent s, for example?
Regards
Senthil
_____________________________
My Blog | My Articles | WinMacro
|
|
|
|
|
Hello,
I've created a subclass of the Button class and I can't figure out why my OnPaintBackground method never gets called. Have any of you ever encountered this problem?
Gus
|
|
|
|
|
I figured it out:
this->SetStyle(ControlStyles::Opaque, false);
Just FYI...
Gus
|
|
|
|
|
from MS:
The PInvokeStackImbalance managed debugging assistant (MDA) is activated when the CLR detects that the stack depth after a platform invoke call does not match the expected stack depth given the calling convention specified in the DllImportAttribute attribute as well as the declaration of the parameters in the managed signature...
ok, understood, by my code is:
Friend NotInheritable Class NativeMethods
Private Sub New()
End Sub
Declare Function GetKeyState Lib "user32" Alias "GetKeyState" (ByVal _
nVirtKey As Long) As Integer
End Class
Now, how should I change the parameters to match those MDA is looking for?!?
Already tried to disable MDA via registry, but I think a solution is not covering an error ...
Thanks in advance /// Angel
|
|
|
|
|
I've found!I was sure that nVirtKey was a Long, but It's a Short (MSDN[^])
sorry ...
Angel
|
|
|
|
|
at http://republika.pl/dailybuilds/waveform.html[^] website you can use new .net multimedia library
Testing your code against performance will keep you running with good scalability and maintenance for years.
NTime.exe - the free tool for real developers of high scalability applications!
|
|
|
|
|
What is dotfuscation? and when will you go for it?
|
|
|
|
|
|
what is the significance of IDispose Interface?
|
|
|
|
|
Any object that holds on to things that need to be cleaned up will impliment IDisposable, and you should call the Dispose method on such items when you're finished with them. Common examples would include pretty much anything in the System.Drawing namespaces, or anything else that holds an unmanaged handle of some sort.
We have this interface because a garbage collected system cannot support deterministic destruction.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
To add to what Christian said I would also recomment that you use using{} when you use an object that implements the IDisposable interface and it will naturally go out of scope at the end of the method. For example:
using(SomeDisposableClass disposableInstance = new SomeDisposableClass())
{
}
When the using block is completed the Dispose() method will be called. It will also clean up the object if an exception is causing the stack to unwind.
My: Blog | Photos
"Man who stand on hill with mouth open will wait long time for roast duck to drop in." -- Confucious
|
|
|
|
|
That's if he's using C#, I don't believe VB.NET supports it.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
It is supported in VB.NET 2.0, so you will be ok if thats what you are working with.
MCSD(VB6/SQL7)
MCAD(C#/SQL2000)
MCSD(C#/SQL2000)
|
|
|
|
|
Can someone tell me if the VS.NET 2005 designer is smarter than the 2003 version?
Can I view inherited forms and controls in the designer?
My root problem is where the base control or form is declared as MustInherit.
I will be installing my version in the next few weeks but would love to know ahead of time.
George Carlin wrote:
"Don't sweat the petty things, and don't pet the sweaty things."
Jörgen Sigvardsson wrote:
If the physicists find a universal theory describing the laws of universe, I'm sure the a**hole constant will be an integral part of that theory.
My Blog[^]
|
|
|
|
|
I make a synchronous web service call when the mouse is clicked or when enter is pressed. What I find is that the if I click on the mouse again while the web service call is still processing the first call it causes annother mouse click event. Since the web service is being called with the synchronous (blocking) call Microsoft.Web.Services2.WebServicesClientProtocol.Invoke this should not happen.
It seems that Invoke is NOT synchronous and this is causing MAJOR headaches for me. Any solutions on how to make it truly synchronous?
The web service proxy class is inheriting from Microsoft.Web.Services2.WebServicesClientProtocol class.
Application - Windows Form (.Net Framework 1.1)
Thanks in advance.
|
|
|
|
|
Easy. Disable the button before you call the web service and re-enable it when the webservice call returns.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Hi All,
Can anyone please give me the solution to how to start the windows application setup from a web page. Means there is a link on web page and I want to start the Installation Wizard to start when I click on this link.
Any type of HELP will be appreciated.
Thankyou
Never think that you have done everything unless you u are dead.
Syed Abbas Naqvi.
|
|
|
|
|
You cannot run a Windows Setup across the internet. Setups can only be run on the target machine or from a local intranet.
|
|
|
|
|
Hi every one,
I've a Windows Application that is distributed to more than 10 different PC's in different location and each has its own DB, and daily synchronize all data between all these DBs with centralized DB on a server by consuming webService (runs on server) using internet connection.
The question is that this application is changing from time to time and new versions of the applicaton are released, so that I'd like to know if there is a method that does these things:
-Client side: checks for new versions
-Server side: provide alert and upload the new version
-Client side: automatic installation
meet them, beat them!
|
|
|
|