CHAPTER 14 (Disney web site) BUILDING MULTITHREADED APPLICATIONS 463 3.
CHAPTER 14 BUILDING MULTITHREADED APPLICATIONS 463 3. Create a Thread object, passing the ParameterizedThreadStart/ThreadStart delegate as a constructor argument. 4. Establish any initial thread characteristics (name, priority, etc.). 5. Call the Thread.Start() method. This starts the thread at the method referenced by the delegate created in step 2 as soon as possible. As stated in step 2, you may make use of two distinct delegate types to point to the method that the secondary thread will execute. The ThreadStart delegate has been part of the System.Threading namespace since .NET 1.0, and it can point to any method that takes no arguments and returns nothing. This delegate can be helpful when the method is designed to simply run in the background without further interaction. The obvious limitation of ThreadStart is that you are unable to pass in parameters for processing. As of .NET 2.0, you are provided with the ParameterizedThreadStart delegate type, which allows a single parameter of type System.Object. Given that anything can be represented as a System.Object, you can pass in any number of parameters via a custom class or structure. Do note, however, that the ParameterizedThreadStart delegate can only point to methods that return void. Working with the ThreadStart Delegate To illustrate the process of building a multithreaded application (as well as to demonstrate the usefulness of doing so), assume you have a console application (SimpleMultiThreadApp) that allows the end user to choose whether the application will perform its duties using the single primary thread or split its workload using two separate threads of execution. Assuming you have used the System.Threading namespace via the C# using keyword, your first step is to define a type method to perform the work of the (possible) secondary thread. To keep focused on the mechanics of building multithreaded programs, this method will simply print out a sequence of numbers to the console window, pausing for approximately two seconds with each pass. Here is the full definition of the Printer class: public class Printer { public void PrintNumbers() { // Display Thread info. Console.WriteLine(”-> {0} is executing PrintNumbers()”, Thread.CurrentThread.Name); // Print out numbers. Console.Write(”Your numbers: “); for(int i = 0; i < 10; i++) { Console.Write(i + ", "); Thread.Sleep(2000); } Console.WriteLine(); } } Now, within Main(), you will first prompt the user to determine if one or two threads will be used to perform the application s work. If the user requests a single thread, you will simply invoke the PrintNumbers() method within the primary thread. However, if the user specifies two threads, you will create a ThreadStart delegate that points to PrintNumbers(), pass this delegate object into the constructor of a new Thread object, and call Start() to inform the CLR this thread is ready for processing.
Note: If you are looking for cheap and reliable webhost to host and run your mysql application check mysql web server services.