Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7626575
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 31, 20262026-05-31T05:20:36+00:00 2026-05-31T05:20:36+00:00

I have a method void DoWork(object input) that takes roughly 5 seconds to complete.

  • 0

I have a method void DoWork(object input) that takes roughly 5 seconds to complete. I have read that Thread is better suited than ThreadPool for these longer operations but I have encountered a problem.

I click a button which calls threadRun.Start(input) which runs and completes fine. I click the button again and receive the following exception:

Thread is running or terminated; it cannot restart.

Can you not “reuse” a Thread? Should I use ThreadPool? Why is Thread “better suited for longer operations” compared to ThreadPool? If you can’t reuse a thread, why use it at all (i.e. what advantages does it offer)?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-31T05:20:37+00:00Added an answer on May 31, 2026 at 5:20 am

    Can you not “reuse” a Thread?

    You can. But you have to code the thread not to terminate but to instead wait for more work. That’s what a thread pool does.

    Should I use ThreadPool?

    If you want to re-use a thread, yes.

    Why is Thread “better suited for longer operations” compared to ThreadPool?

    Imagine a thread pool that is serving a large number of quick operations. You don’t want to have too many threads, because the computer can only do so many things at a time. Each long operation you make the thread pool do ties up a thread from the pool. So the pool either has to have lots of extra threads or may run short of threads. Neither leads to an efficient thread pool design.

    For longer operations, the overhead of creating and destroying a thread is very small in comparison to the cost of the operation. So the normal downside of using a thread just for the operation doesn’t apply.

    If you can’t reuse a thread, why use it at all (i.e. what advantages does it offer)?

    I’m assuming you mean using a thread dedicated to a job that then terminates over using a thread pool. The advantage is that the number of threads will always equal the number of jobs this way. This means you have to create a thread every time you start a job and destroy a thread every time you finish one, but you never have extra threads nor do you ever run short on threads. (This can be a good thing with I/O bound threads but can be a bad thing if most threads are CPU bound most of the time.)

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a method which takes params object[] such as: void Foo(params object[] items)
I have a method -(void)myMethod:(MyObject*)obj And I am detaching a new thread [NSThread detachNewThreadSelector:@selector(myMethod)
I have the following method public static void SerializeToXMLFile(Object obj,Type type, string fileName) {
In my class I have a static method public static void DoWork(int param) ...
Imagine I have a method: void Method(bool parameter){ if(parameter){ // first case } else
I have an interface method public void Execute(ICommand command); which needs to pass known
I have this method: private delegate void watcherReader(StreamReader sr); private void watchProc(StreamReader sr) {
I have the following method: public void PutFile(string ID, Stream content) { try {
If I have a method such as: public void MyMethod(int arg1, string arg2) How
I have a method which I would like to invoke asynchronously: void Foo() {

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.