Page 124 - CSharp/C#
P. 124

// return something as a "result"
             return new Random().Next(100);
         }


        Thread


        See below for a simple example of how to use a Thread to do some time intensive stuff in a
        background process.


         public async void ProcessDataAsync()
         {
             // Start the time intensive method
             Thread t = new Thread(TimeintensiveMethod);

             // Control returns here before TimeintensiveMethod returns
             Console.WriteLine("You can read this while TimeintensiveMethod is still running.");
         }

         private void TimeintensiveMethod()
         {
             Console.WriteLine("Start TimeintensiveMethod.");

             // Do some time intensive calculations...
             using (StreamReader reader = new StreamReader(@"PATH_TO_SOME_FILE"))
             {
                 string v = reader.ReadToEnd();

                 for (int i = 0; i < 10000; i++)
                     v.GetHashCode();
             }
             Console.WriteLine("End TimeintensiveMethod.");
         }


        As you can see we can not return a value from our TimeIntensiveMethod because Thread expects a
        void Method as its parameter.

        To get a return value from a Thread use either an event or the following:


         int ret;
         Thread t= new Thread(() =>
         {
             Console.WriteLine("Start TimeintensiveMethod.");

             // Do some time intensive calculations...
             using (StreamReader reader = new StreamReader(file))
             {
                 string s = reader.ReadToEnd();

                 for (int i = 0; i < 10000; i++)
                     s.GetHashCode();
             }
             Console.WriteLine("End TimeintensiveMethod.");

             // return something to demonstrate the coolness of await-async
             ret = new Random().Next(100);
         });




        https://riptutorial.com/                                                                               70
   119   120   121   122   123   124   125   126   127   128   129