jjacksn
asked on
Threading problem
I have a bunch of threads that perform some of the longer operations in my program. I am using the form:
ThreadStart starter = new ThreadStart(func);
Thread t = new Thread(starter);
t.Start();
1. Should I change it all to delegates, does it matter?
2. When I close my main application window, threads still run to completion, I want to kill them all.
3. When a user logs off but the program is still running, I want to kill all open threads (or at least notify the UI to wait until they have completed).
What is the best way to structure this?
ThreadStart starter = new ThreadStart(func);
Thread t = new Thread(starter);
t.Start();
1. Should I change it all to delegates, does it matter?
2. When I close my main application window, threads still run to completion, I want to kill them all.
3. When a user logs off but the program is still running, I want to kill all open threads (or at least notify the UI to wait until they have completed).
What is the best way to structure this?
ASKER
so I just have a list of threads Thread[] and call t.WhatyouSaid from my main, calling thread?
when the thread completes, will calling t.Join() or t.Abort() throw an error, or just do nothing?
when the thread completes, will calling t.Join() or t.Abort() throw an error, or just do nothing?
ASKER
Should I be using thread pools for this? If so, how do I do that (can you point me to a tutorial).
This article describes how to run a worker thread, send information from it to main thread and stop worker thread correctly.
About thread pool - thread pool is used when all threads make the same work which may be done by same thread function. For example, threads talking with clients in HTTP server. If this is your case, and number of clients is not restricted, consider using thread pool.
If all your threads are different, each one of them make it's own work, use the way described in the article for each thread.
About thread pool - thread pool is used when all threads make the same work which may be done by same thread function. For example, threads talking with clients in HTTP server. If this is your case, and number of clients is not restricted, consider using thread pool.
If all your threads are different, each one of them make it's own work, use the way described in the article for each thread.
ASKER
They are pretty simple threads, I'm just using them for calls to remote objects that take a while.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
to have a thread waiting for another thread to terminate, use Join() on the first thread.