|
the requirement goes like this ... I have set of ip's . i am looping through the IP list and for each ip i am checking whether i can ping them , i have given a time out of 4 seconds for ping reply. and am storing the result in a datatable.Pleas let me know how it can be implemented using threading to make the looping faster without losing any data as most of the ips are taking 3-4 seconds for reply.
|
|
|
|
|
Ok, it's a little tricky.
The simplest way, not very good is: make one thread for every ping action, start them all, then Join them all. Is that good enough for you?
Otherwise, use ping.SendAsync, and make very sure that PingCompletedEventHandler is thread-safe. The handler will have to 1) save the result (safely! may involve locking) and 2) signal a waithandle (after saving the result). Then you can do a WaitAll over all the waithandles to continue when all the pings are done.
|
|
|
|
|
if i follow the first option, Do in need to specify any timeout in Thread.Join method.
|
|
|
|
|
If the pings have a timeout, that should not be necessary, though it wouldn't be a problem either (as long as it's high enough to give the pings time to succeed).
|
|
|
|
|
i think i need to specify timeout in join with more that 2500 ms as i have specified a time out of 2 sec. without any time out its very slow.
|
|
|
|
|
But sometimes the pings took 4 seconds, right?
superselector wrote: without any time out its very slow. Well that's weird, it shouldn't take significantly longer than the longest running ping. Could you show the code?
|
|
|
|
|
yes the time out takes 4 secs, i have given 2 secs for testing ... actually on successful ping checking for ping i am trying to get some basic details of that ip using WMI.WMI is taking some time also if its not enabled.
for (int index = startIP; index <= EndIP; index++)
{
ipVal = startSubnet + "." + index.ToString();
Thread wmithread = new Thread(() => PerformWMIOperation(ipVal.ToString().Trim(), txtUserName.Text.ToString().Trim(), txtPassword.Text.ToString(), txtDomain.Text.ToString(), dtAssetValues, chkImpersonate.Checked, recordnumber));
wmithread.Start();
wmithread.Join(2500);
}
|
|
|
|
|
Ok, not like that. Don't, "for every thread, start it, then join it". That just runs everything in serial. Do, "for every thread, start it. Then, for every thread, join it." That's how I said it: start them all then join them all.
|
|
|
|
|
Hi i did not understand do you want the code to be changed to
for (int index = startIP; index <= EndIP; index++)
{
ipVal = startSubnet + "." + index.ToString();
Thread wmithread = new Thread(() => PerformWMIOperation(ipVal.ToString().Trim(), txtUserName.Text.ToString().Trim(), txtPassword.Text.ToString(), txtDomain.Text.ToString(), dtAssetValues, chkImpersonate.Checked, recordnumber));
wmithread.Start();
wmithread.Join();
}
|
|
|
|
|
That wouldn't help. The problem is this:
superselector wrote: wmithread.Start();
wmithread.Join(); That's like calling that ping operation without a thread, except this way resources are wasted as well. Or to put it differently, it's like hiring a team to play a game of monopoly, in order to do it faster. That doesn't work. If everyone takes turns anyway, you might as well do it by yourself.
You need an array of threads. Fill the array, start them all, then, and only then, join them all.
Besides, what's with the WMI stuff? Do you need something that the Ping class[^] can't do?
|
|
|
|
|
can you please give a sample code to implement this
|
|
|
|
|
Ok.. it's not that hard though.
Thread[] threads = new Thread[something];
for (int i = 0; i < threads.Length; i++)
{
threads[i] = new Thread(something);
threads[i].Start();
}
for (int i = 0; i < threads.Length; i++)
threads[i].Join();
|
|
|
|
|
hi with this approach , I am missing data .. means i am not getting output for all the IPs
|
|
|
|
|
The ip address is getting overlapped. Means two rows are having same ip address.
|
|
|
|
|
Did you forget to use synchronization when saving the result?
|
|
|
|
|
If you have a multi-core processor you can consider using Parallel.ForEach .
It could lead to another set of issues with concurrency, but you will be able to run a loop faster.
|
|
|
|
|
Question.
Why are you calling a method that generates an individual row?
Yhy not get all the data required at once and then populate the datatable?
Every day, thousands of innocent plants are killed by vegetarians.
Help end the violence EAT BACON
|
|
|
|
|
HI everyone,
Thanks for you replies.I had never used thread before hence i had very little idea about multi-threding.I have removed the sleep inside the method as i found that it is not helping the cause.
|
|
|
|
|
I want to know enterprise application completely because i am going to switch in another company. i have not worked at any enterprise application. i want to learn ERP base application. please help me how i should start to learn so that i can completely learn ERP base application and make an advance level ERP base sample application.
if some one have some sample code and some suggested website and book then please let me know.
|
|
|
|
|
Yeah, the only thing that makes an "enterprise" application "enterprisey" is the size of the application. There's nothing different between that and a "normal" application, or even something like Notepad. In the end, you're still just breaking a large problem down into smaller and smaller pieces and writing code to solve each little tiny problem.
There is no single website that's going to walk you through all of this stuff. The only thing that's going to teach you how to make an "advanced level" app is experience, trial and error, and making mistakes. Lots of them.
|
|
|
|
|
Dear Dave Kreskowiak,
Really i am happy to read your reply, but can you list the content topics in a sequence such that it will help me to cover it very short duration. I mean from which topic i should start and keep my self move ahead, in such a way it create less confusion for for me.
Can you please suggest me some website for it and can you send me some sample application with code and explanation. Just start from much basic application based on ERP. My E-mailId is amitteshwar@gmail.com
Thanks
Amit Teshwar
|
|
|
|
|
Member 8824417 wrote: can you list the content topics in a sequence such that it will help me to cover
it very short duration
Yeah, right. You don't get it. ERP systems covers such a huge range of disciplines, applications and systems, that there is no list! You're NOT going to learn how to design enterprise systems in a couple of weeks. This takes years of experience developing all kinds of systems or all different sizes.
Member 8824417 wrote: Can you please suggest me some website for it
There is no one website. There is no one books. ERP systems are about the largest, most complex computer systems you can come by in an enterprise, spanning an entire enterprise, usually touching every corner of the business processes in a company. These systems are not just one application. They are suites of applications, spanning a large range of technologies and languages.
In other words, there's no such thing as an "example" ERP system. There is no such thing as a "simple" explanation for one of these systems.
...and the only people who will every send you an email are the spam bots that troll websites looking for newbies like you who are dumb enough to post your email address in a public forum.
|
|
|
|
|
Hello,
I am trying to implement DataLogic OPOS driver. In this dll I have function to connect to device:
int OpenService(string DeviceClass, string DeviceName, object pIDispatch);
Unfortunately vendor documentation is miserable. Can you help me with this last parameter. What is this? If I understand it correctlly it is an instance of class which will react when device will scan data.
m.
|
|
|
|
|
The device is DataLogic qw2100
|
|
|
|
|
What on earth makes you assume that we will know more than the manufacturer?
You should talk to the people who created it - they should provide technical support and will know more about their product than we will. If they don't, then find another supplier and demand your money back!
If you don't tell them that their "documentation is miserable" how do you expect them to improve it?
The only instant messaging I do involves my middle finger.
|
|
|
|