|
Hi!
This is what i have so far...
foreach (string result in Ldap.Query(filtertext))
{
ThreadStart starter = delegate { NetInfo.Resolve(result, out ipResult); };
Thread t = new Thread(starter);
t.Start();
while (t.ThreadState.ToString() == "Running")
{
Thread.Sleep(50);
}
}
The problem in my mind is that i'm making the UI thread sleep... this ties up the UI and seeing as how i started trying to integrate multi-threading to stop something like this and increase the speed at which i can ping other machine's and return there address assuming they are up. What should i do because i need alot of the values off the UI and i'd still like to not tie up the UI i've been reading a bit about using a threadpool i'm not sure if that would be faster or not... The other problem that i'm running into is that i have to pull a bunch of values off the form and then obviously i need to put other values back on the form in a listview. I was thinking that i could start a new thread that starts all the threads that pulls all the values back and then stores them into something like a arraylist and pushes the values back to the form... is this a good idea? or should i just forget about multi threading? I hope this isn't to muddled up and is clear enough for people to understand if you need further clarification lemme know...
I know the human being and fish can coexist peacefully. -George Dubya Bush
Don't believe me?
http://politicalhumor.about.com/library/blbushism-fish.htm
Yes thats right he actually said that...
|
|
|
|
|
I agree that "Thread.Sleep(50);" is sleeping the UI thread.
Bad thing to do, generally speaking.
You might want to change the
while(t.ThreadState.ToString() == "Running"){}
into
while(t.ThreadState == ThreadState.Running){}
Strings are slower, and string compare should be done using
String.Compare(string a, string b) , not a == b , which does not compare the string content.
There are a number of mechanisms for sharing data between the UI and other threads. A simple one is to have the thread Invoke a call on the form. This will allow the other thread to pass data back to the form with out UI sync problems.
You also need to pass the initial data in to the thread you are starting.
Generally, I create a class that has the threaded method, and holds the data (or references) that are needed. The UI thread creates objects of that class, hands them the data, and tells them to go start themselves. That way you just start them,and don't have to wait for any type of sync events before you start the next.
LMK if that helps.
Learn to write self marginalizing code!
Call 1-888-BAD-CODE
------------------
Silver member by constant and unflinching longevity.
|
|
|
|
|
Hi,
For more responsive UI in case of multithreading, think about BackgroundWorker class.
The class is providing options to intimate the UI about the progress of the thread and thread completion status.
Please lemme know if it works.
|
|
|
|
|
I am using DataTable/DataSet and a dynamic GridView.
I want to display a check mark that can not be an image because of the column (datatable) datatype restrictions. So, I was trying to use ASCII value. For check mark, the decimal ASCII value is 251. But it gives me something that doesn't look like a check mark at all.
Any ideas?
Thanks.
Ekjon
|
|
|
|
|
I actually found the way. Never mind.
|
|
|
|
|
|
it's possible to create one, yes.
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
|
Buy a book. And tell your "instructor" to do the same. He's really not much better than you.
Also realize that he's "teaching" because he couldn't get a real job anywhere. He's a misfit. And you're asking for help, as a misfit, to satisfy yet another misfit. Very sad.
|
|
|
|
|
This person wants us to do his homework. Ignore!
|
|
|
|
|
|
Do you mean generics?
search for "c# generics"[^]
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
CP members please ignore this member. He is obviously too lazy to use Google to do his own homework.
|
|
|
|
|
|
by using reflection (i hope that's not too descriptive).
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
Damn you and your technical jargon.
|
|
|
|
|
|
it looks like hez preparing for an interview!
|
|
|
|
|
|
You really need to read this[^] article. You've asked two questions which you should have been able to find the answer to without too much trouble. Being able to answer questions for yourself is an important skill for a developer.
|
|
|
|
|
Yea C# does support the concept.
|
|
|
|
|
What is the concept of virtual base classes in C#
|
|
|
|
|
Virtual methods are usually placed inside absract classes (superclasses), and do some sort of 'grunt work'. Being marked virtual allows it to be overriden by methods in classes that inherit from it.
Think of the concept as a stack of bricks, and when you override the virtual method, you are generally inserting another block right in the middle of the stack.
Cheers,
|
|
|
|
|
Absolutely, C# don't support virtual base class.
Cheers,
|
|
|
|
|
I am new to network programming. May be its a basic question, I surely can get help with ur input.
I have a TCP Client class and when I have a message to send I initialize tcpclient, connect and send the message. Now I have a time out till i wait for response. I am waiting for response,
My question is : Can I send another message while waiting for response.
After I receive a response I close the tcpClient.It is a disconnected client.
|
|
|
|