|
George_George wrote: Any general ideas to debug and analyze further for application hang problem?
You can step into the code and check which line execution is hanging. Identify why it is hanging. If the method which is hanging provides a timeout mechanism, use that so that your code will timeout if it can't process within the limit and will not make the whole application hang.
|
|
|
|
|
|
Hi George,
1.
if only one app hangs, you shouldn't call it a system hang. You are not going to reboot are you?
2.
if the problem occurs consistently you might just perform normal debugging. if on the other hand the
hang is occasional, I would add tracing code, so the app reports its activities to a file, one line at a time, with the time prefixed. In fact I always do that, from the very beginning, long before it starts to go wrong; and I tend to use File.AppendText so the file is normally closed and can be read while the app is running.
Without trace logs, intermittent or occasional problems are hard to debug, while single-stepping and breakpointing, you are never sure the problem will occur...
With trace logs, you can focus on a bad run; or you can compare traces from a bad run with those from a good run.
|
|
|
|
|
Luc Pattyn wrote: Without trace logs, intermittent or occasional problems are hard to debug, while single-stepping and breakpointing, you are never sure the problem will occur...
With trace logs, you can focus on a bad run; or you can compare traces from a bad run with those from a good run.
That's a good suggestion
|
|
|
|
|
Agree, Navaneeth.
regards,
George
|
|
|
|
|
|
I have lots of ideas, the first and most important ones are here already[^].
Luc Pattyn [Forum Guidelines] [My Articles]
I use ListBoxes for line-oriented text output (not TextBoxes), and PictureBoxes for pictures (not drawings).
modified on Friday, June 10, 2011 12:14 PM
|
|
|
|
|
Hi Luc,
I have read them and the timeout issue is found from your advice when I narrow down my code. I do not know why there is unexpected timeout. Any ideas?
regards,
George
|
|
|
|
|
George_George wrote: the timeout issue is found
Please explain. And did it cause a code change?
George_George wrote: Any ideas?
Lots of them.
Log everything with timing info, up to milliseconds.
Show us the logs.
Don't trust anything.
What are those servers? your code too? Make it log its actions too!
You're the guy trying to send huge files while the network traffic is low, aren't you?
Tell us the complete story, not just some snippets.
Experiment. Try longer timeouts.
Catch ALL exceptions, not just WebExceptions. Log them too.
etc. etc.
Summary: observe, add observation tools, observe more; think, formulate an hypothesis, validate
your hypothesis, use the gray cells.
|
|
|
|
|
Thanks Luc!
It is strange that when I change the address to external servers, like google.com and ask.com. The results are the same -- for the beginning couple of times, the connections are successful, but for the following connections, all timeout. Could you reproduce?
regards,
George
|
|
|
|
|
There is no need to reproduce, you just told everyone what the problem is.
How many files can one open on a PC?
Luc Pattyn [Forum Guidelines] [My Articles]
I use ListBoxes for line-oriented text output (not TextBoxes), and PictureBoxes for pictures (not drawings).
modified on Friday, June 10, 2011 12:15 PM
|
|
|
|
|
Thanks Luc,
1.
"How many files can one open on a PC?" -- is it related to my question?
2.
I find when I call close method on response, the problem is solved. Why? .Net does not release resource automatically?
regards,
George
|
|
|
|
|
George_George wrote: is it related to my question?
was it part of my reply to your question?
George_George wrote: .Net does not release resource automatically?
it does, in a lazy way. That is why we have Dispose() and Close() methods, so we can tell it to perform some cleanup sooner hence reducing the load of the app on system resources. When an object no longer needs to be open, you should call Close() if that exists. When an object is no longer needed, you should call Dispose() if that exists, and not touch it any more. That is Kyoto for programmers.
Luc Pattyn [Forum Guidelines] [My Articles]
I use ListBoxes for line-oriented text output (not TextBoxes), and PictureBoxes for pictures (not drawings).
modified on Friday, June 10, 2011 12:15 PM
|
|
|
|
|
Thanks Luc!
1.
Why if I do not call close, there will be timeout? I can not think of the relationship between them.
2.
"was it part of my reply to your question?" -- confused. What do you want to express?
regards,
George
|
|
|
|
|
George_George wrote: Why ... there will be timeout?
GetResponse needs some system resources to execute the request, those resources are finite, and since you have chosen not to release them explicitly, it has to wait for them and can not even start executing your command, possibly longer than the allotted time to perform its entire operation.
The way networking has been implemented there is only a limited number of concurrent operations supported; not closing some helps in hitting the ceiling pretty soon.
Luc Pattyn [Forum Guidelines] [My Articles]
I use ListBoxes for line-oriented text output (not TextBoxes), and PictureBoxes for pictures (not drawings).
modified on Friday, June 10, 2011 12:16 PM
|
|
|
|
|
Thanks Luc,
"those resources are finite" -- should be open connection handles in my scenario?
My confusion is, what is the limitation number? Any documents mentions the number? I find it is too small, in my testing, less than 10.
regards,
George
|
|
|
|
|
George_George wrote: open connection handles in my scenario?
amongst others. empty buffers in a protocol stack, whatever.
George_George wrote: what is the limitation number?
I don't know, I never had a need to know. I close stuff in time.
George_George wrote: Any documents mentions the number?
I don't know. Your search tools are as good as mine.
Luc Pattyn [Forum Guidelines] [My Articles]
I use ListBoxes for line-oriented text output (not TextBoxes), and PictureBoxes for pictures (not drawings).
modified on Friday, June 10, 2011 12:16 PM
|
|
|
|
|
Hello,
I have a project which uses various different assmeblies for each task
for example:
Crop pdf - assembly
Write Word - assembly
Create excel and convert to HTML - assembly
Now there can be n number of assemblies which will be used based on some condition.
I have two questions as below:
What kind of pattern will be best suited for this?
How can I make sure that the code written by each individual for each assembly do not have a common code in place.
Regards,
Pavas
|
|
|
|
|
mpavas wrote: What kind of pattern will be best suited for this?
Create a common interface which all your assemblies has to implement. You can use Factory pattern and return the interface instance. pseudo code follows
Interface ITask{
void DoTask();
}
ITask task = TaskFactory.GetTask(TaskIdentifier)
task.DoTask() TaskFactory.GetTask will check the conditions and load relevant assemblies using reflection and return it's instance.
mpavas wrote: How can I make sure that the code written by each individual for each assembly do not have a common code in place.
This is not clear. Can you explain?
|
|
|
|
|
Thanks,
The last question was:
There are 10 developers writing different assemblies.
Now how can we make sure they do not use duplicate codes.. I guess we need to fist list out all the different methods hence we can re-use them.
Thanks for the suggestion
Regards,
Pavas
|
|
|
|
|
mpavas wrote: Now how can we make sure they do not use duplicate codes
What do you mean by duplicate code? You should conduct meetings with the team members and decide how each one has to code. Peer reviews also will work.
|
|
|
|
|
Yes, Thanks for answering the stupid question. I also thought that after posting the question
Regards,
Pavas
|
|
|
|
|
Dear All,
I have MDI form and i put a panel into my mdi form and the panel dock status is fill.
I want to open other forms as child in this MDI form.
sure i use MdiParent properties of child form to assing parent to current form.
i open the child form, it gets opened, but it does not appear to the front, front of panel.
it means i can't see the child form.
how should i open to see the child form, if i must have panel there.
Thanks,
Abdul Rahaman Hamidy
Database Developer
Kabul, Afghanistan
|
|
|
|
|
Chetor astee Abdul?
Use the BringToFront() property of the child form.
|
|
|
|
|
thx and nice term,
BringToFront() method doesent work,
it does bring the form infront of panel.
Abdul Rahaman Hamidy
Database Developer
Kabul, Afghanistan
|
|
|
|