Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

ParameterizedThreadStart with parameter

Posted on 2009-05-07
14
Medium Priority
?
11,123 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 2000 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
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 

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
 

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

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Article by: Najam
Having new technologies does not mean they will completely replace old components.  Recently I had to create WCF that will be called by VB6 component.  Here I will describe what steps one should follow while doing so, please feel free to post any qu…
Introduction Hi all and welcome to my first article on Experts Exchange. A while ago, someone asked me if i could do some tutorials on object oriented programming. I decided to do them on C#. Now you may ask me, why's that? Well, one of the re…
We’ve all felt that sense of false security before—locking down external access to a database or component and feeling like we’ve done all we need to do to secure company data. But that feeling is fleeting. Attacks these days can happen in many w…
Despite its rising prevalence in the business world, "the cloud" is still misunderstood. Some companies still believe common misconceptions about lack of security in cloud solutions and many misuses of cloud storage options still occur every day. …

971 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