Click here to Skip to main content
11,635,098 members (79,016 online)
Click here to Skip to main content
Add your own
alternative version

Threading paradigms available under the .NET CLR, using C#

, 22 Dec 2004 78.4K 448 74
This article discusses the various threading paradigms available under the .NET CLR, using C#.
managedthreadcs-async.zip
ManagedThreadCS-Async.sln.old
App.ico
ManagedThreadCS-Async.csproj.user
managedthreadcs-pool.zip
App.ico
ManagedThreadCS-Pool.csproj.user
managedthreadcs-pool2.zip
App.ico
ManagedThreadCS-Pool.csproj.user
managedthreadcs.zip
App.ico
ManagedThreadCS.csproj.user
using System;
using System.Threading;
using System.Collections;
using System.Diagnostics;

namespace ManagedThreadCS
{
	/// <summary>
	/// Summary description for CGSRMgrThread.
	/// </summary>
	public class CGSRMgrThread
	{
  private ManualResetEvent _mre;

  private Thread    _t;
  private ArrayList _vecGSR;
  private String    _name;
	 private ArrayList _vec;

  public CGSRMgrThread(ArrayList vec)
  {
   _vec = vec;
		   
   _vecGSR = new ArrayList();
   _mre = new ManualResetEvent(false);

   _t = new Thread(new ThreadStart(ThreadFunc));
   _t.Start();
  }

  ///////////////////////////////////////////////////////////////////////////////
  //  Function    : ThreadFunc
  //  Description : This function contains the code to be executed by the
  //                secondary thread.
  //
  // Modification History
  //  May xx, 2004  gjk  initial design
  //  May 25, 2004  gjk  Added Event object (set event on thread completion)
  ///////////////////////////////////////////////////////////////////////////////
  //
  private void ThreadFunc()
	  {
       Thread.Sleep(5);
       _name = Thread.CurrentThread.GetHashCode().ToString();
       Console.WriteLine("Thread {0} has initialized",_name);
       int it = 0; 
       while (it != _vec.Count)
        {
         GetGSRs((int)_vec[it]);
         Console.WriteLine("Thread {0} Intermediate Result : {1}", _name, _vec[it]);
         ++it;
        }
       Console.WriteLine("Number of records saved : {0}", _vecGSR.Count);
       Console.WriteLine("Thread {0} finished", _name);
      
      // signal event indicating completion of the thread
      _mre.Set();
	  }

  ///////////////////////////////////////////////////////////////////////////////
  //  Function    : GetMRE
  //  Description : Returns the event object for this instance
  //
  // Modification History
  //  May 25, 2004  gjk  original
  ///////////////////////////////////////////////////////////////////////////////
  //
  public ManualResetEvent GetMRE() {return _mre;}


  public void GetGSRs(int obligor)
	  {
    // simulating the retrieval of a number of records for the specified obligor
    // get records

	   // get a record count which is a multiple of the obligor # for testing
    int num = obligor * 2 ;
    for (Int32 x=0; x < num; x++)
     {
      String s;
    	 s = "GSR";
      s = String.Concat(s, x.ToString());
      CGSR gsr = new CGSR(s,"USD",0,0,x);
      gsr.SetObligor(obligor);
      _vecGSR.Add(gsr);
     }
	  }

	 public ArrayList GetGSRs() {return _vecGSR;}
	 protected CGSRMgrThread(){;}

	}
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

Gary J. Kuehn
Engineer
United States United States
No Biography provided

You may also be interested in...

| Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.150728.1 | Last Updated 23 Dec 2004
Article Copyright 2004 by Gary J. Kuehn
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid