Solved

ParameterizedThreadStart with parameter

Posted on 2009-05-07
14
11,057 Views
Last Modified: 2012-05-06
How do I let the ParameterizedThreadStart take a List<byte> as a parameter ?
List<byte> pmList = new List<byte>();
 

ParameterizedThreadStart pts = new ParameterizedThreadStart(CheckPunches);

                        Thread t = new Thread(pts);

                        t.Start(pmList);
 

private void CheckPunches(List<byte> bBuffer)

{
 

}

Open in new window

0
Comment
Question by:u2envy1
  • 6
  • 5
  • 3
14 Comments
 
LVL 16

Accepted Solution

by:
CuteBug earned 500 total points
ID: 24324822
You have to declare CheckPunches in the following way
            List<byte> pmList = new List<byte>();
 

            ParameterizedThreadStart pts = new ParameterizedThreadStart(CheckPunches);

            Thread t = new Thread(pts);

            t.Start(pmList);
 
 

        }
 

        private void CheckPunches(object data)

        {

            List<byte> pmList = (List<byte>)data;

        }

Open in new window

0
 

Author Comment

by:u2envy1
ID: 24324919
Perfecto !!
How do I call the CheckPunches in a ThreadPool.... ?
0
 
LVL 16

Expert Comment

by:CuteBug
ID: 24324955
WaitCallback workItem = new WaitCallback(CheckPunches);
ThreadPool.QueueUserWorkItem(CheckPunches,  pmList);
0
 

Author Comment

by:u2envy1
ID: 24325093
Thanks....
Can I add this in a loop or should I keep the WaitCallback outside the loop ?
0
 
LVL 16

Expert Comment

by:CuteBug
ID: 24325208
Which loop are you referring to?
0
 

Author Comment

by:u2envy1
ID: 24325261
Sorry...... My loop looks like this.

Process Buffer()

{

do

{
 

WaitCallback workItem = new WaitCallback(CheckPunches);

ThreadPool.QueueUserWorkItem(CheckPunches,  pmList);

pmList = Connection.ReadData();
 

}

While(pmList.Count() != 0);

}

Open in new window

0
 
LVL 9

Expert Comment

by:tculler
ID: 24325338
You can actually just omit the WaitCallback delegate decleration entirely; there's no reason for it, really.

Also, you're going to get a compiler error on line 11 for 2 reasons: first, "while" is capitalized. Second, the List object's Count method is actually a property, so you'll need to remove those parentheses.

Using the ThreadPool and individual threads are completely different things, so if you'd like me to explain what's going on here, I can :)
Nate
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

Author Comment

by:u2envy1
ID: 24325429
Sorry about the two mistakes. Was just typing over my head.
So you saying that every time I call the CheckPunches it will be executed in a new thread with out the WaitCallback delegate ?
0
 
LVL 16

Expert Comment

by:CuteBug
ID: 24325556
WaitCallback delegate is required.

@u2envy1:
By the way, It should be ThreadPool.QueueUserWorkItem(workItem, pmList);

And yes it should be within the loop. Therefore each time the pmList gets new data, a new instance of CheckPunches is added to the ThreadPool for processing.
0
 

Author Closing Comment

by:u2envy1
ID: 31578959
Thx..... all your help is much appreciated
0
 
LVL 9

Expert Comment

by:tculler
ID: 24326077
Hate to go back and forth here, but... The WaitCallback delegate is NOT required. The compiler will automatically do this for you--there's no reason to create it yourself. The following will work just fine.
ThreadPool.QueueUserWorkItem(YourMethod, pmList);

// "YourMethod" should match the name of the handling method. Be sure

// to omit the parentheses "()"
 

void YourMethod(Object myData) 

{

     // Processing, etc etc

}

Open in new window

0
 
LVL 16

Expert Comment

by:CuteBug
ID: 24326183
tculler, you are right.
my mistake.
0
 
LVL 9

Expert Comment

by:tculler
ID: 24326251
No problem, honest mistake ;)
0
 

Author Comment

by:u2envy1
ID: 24326348
Thx guys......
tculler: Sorry I neva award you with some points.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Excel import error " External table is not in expected format" 12 49
Syntax Error 2 47
Entity Framework 7 33
C# parent child form 5 19
This article describes a simple method to resize a control at runtime.  It includes ready-to-use source code and a complete sample demonstration application.  We'll also talk about C# Extension Methods. Introduction In one of my applications…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
This tutorial gives a high-level tour of the interface of Marketo (a marketing automation tool to help businesses track and engage prospective customers and drive them to purchase). You will see the main areas including Marketing Activities, Design …
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.

862 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

23 Experts available now in Live!

Get 1:1 Help Now