可以试试这个:public Thread ( ParameterizedThreadStart start ) using System; using System.Threading;public class Work { public static void Main() { // To start a thread using a shared thread procedure, use // the class name and method name when you create the // ParameterizedThreadStart delegate. // Thread newThread = new Thread( new ParameterizedThreadStart(Work.DoWork));
// Use the overload of the Start method that has a // parameter of type Object. You can create an object that // contains several pieces of data, or you can pass any // reference type or value type. The following code passes // the integer value 42. // newThread.Start(42); // To start a thread using an instance method for the thread // procedure, use the instance variable and method name when // you create the ParameterizedThreadStart delegate. // Work w = new Work(); newThread = new Thread( new ParameterizedThreadStart(w.DoMoreWork));
// Pass an object containing data for the thread. // newThread.Start("The answer."); }
public static void DoWork(object data) { Console.WriteLine("Static thread procedure. Data='{0}'", data); } public void DoMoreWork(object data) { Console.WriteLine("Instance thread procedure. Data='{0}'", data); } }/* This code example produces the following output (the order of the lines might vary):Static thread procedure. Data='42' Instance thread procedure. Data='The answer' */这个构造函数是允许带参的...
private void aExtend()
{
a(10);
}
{
int i=0;
public myclass(int j)
{
i=j;
}
private void a(int i)
{ }}
不同的线程声明不同的实例
ParameterizedThreadStart start
)
using System;
using System.Threading;public class Work
{
public static void Main()
{
// To start a thread using a shared thread procedure, use
// the class name and method name when you create the
// ParameterizedThreadStart delegate.
//
Thread newThread = new Thread(
new ParameterizedThreadStart(Work.DoWork));
// Use the overload of the Start method that has a
// parameter of type Object. You can create an object that
// contains several pieces of data, or you can pass any
// reference type or value type. The following code passes
// the integer value 42.
//
newThread.Start(42); // To start a thread using an instance method for the thread
// procedure, use the instance variable and method name when
// you create the ParameterizedThreadStart delegate.
//
Work w = new Work();
newThread = new Thread(
new ParameterizedThreadStart(w.DoMoreWork));
// Pass an object containing data for the thread.
//
newThread.Start("The answer.");
}
public static void DoWork(object data)
{
Console.WriteLine("Static thread procedure. Data='{0}'",
data);
} public void DoMoreWork(object data)
{
Console.WriteLine("Instance thread procedure. Data='{0}'",
data);
}
}/* This code example produces the following output (the order
of the lines might vary):Static thread procedure. Data='42'
Instance thread procedure. Data='The answer'
*/这个构造函数是允许带参的...
当然这要求你的VS是2005的,不然也只能像楼上几位说的,封装在类里了...具体见:
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.NETDEVFX.v20.chs/cpref12/html/C_System_Threading_Thread_ctor_1_e41c9448.htm
那么 object 如何转换成 int 型如果你要传的参数是int型的,那就直接用int型的作参数不就行了..public static void DoWork(int data)
{
//....
}
public static void DoWork(object data)
{
int a;
string str
a=(int)data
}这个函数里,我对str有不同的操作。就是根据传来的 data 值判断的。请问多个线程同时调用这个函数,会不会使str变量的值发生冲突??
{
mx.WaitOne();
int a;
string str
a=(int)data
mx.ReleaseMutex();
}
ThreadPool.QueueUserWorkItem( new WaitCallback( new XX.a ) , i );