急寻高手,帮帮忙吧,这个该怎么写:C#for循环生成线程顺序对一个函数执行操作。
C#用for循环生成线程,生成的线程对函数A执行操作。等执行完函数A之后,终止该线程,然后继续for循环,再生成一个线程,再对函数A进行操作,等执行完函数A之后,终止该线程,。。。。继续执行for循环,直至for 循环结束,函数A不能加静态属性。线程必须生成、终止,再生成、在终止。这个该怎么写呢?求教高手急寻高手,这个程序我写了好几天了,也没有写出来。哪位高手会,帮下小弟,最好给个例子 --------------------编程问答--------------------for(int i=0;i<5;i++)
{
var t=new Thread(A);
t.Start();
t.Join();
}
不知道你这样做有什么特殊的意义 --------------------编程问答--------------------
public Form1()
{
InitializeComponent();
Control.CheckForIllegalCrossThreadCalls = false;
}
private void button1_Click(object sender, EventArgs e)
{
for (Int32 i = 0; i < 1000; i++)
{
Thread t = new Thread(new ParameterizedThreadStart(Foo));
t.IsBackground = true;
t.Start(i);
t.Join();
}
}
private void Foo(Object o)
{
this.Text = "Thread " + o.ToString();
Thread.Sleep(3000);
}
--------------------编程问答-------------------- 我做的这个实际上是一个通过tcp传输数据的函数,因为这个函数要独占一些东西,需要加锁,所以必须等一个文件传完,释放锁之后才能传下一个文件。 --------------------编程问答-------------------- 三楼的代码再加个锁。以保证资源的独占
private void Foo(Object o)
{
lock(this)
{
this.Text = "Thread " + o.ToString();
Thread.Sleep(3000);
}
}
--------------------编程问答-------------------- class Program
{
static EventWaitHandle _workEvent = new ManualResetEvent(false);
public static void Main()
{
myThread t = new myThread();
while (true)
{
string s = Console.ReadLine();
t.Run(s);
}
}
}
class myThread
{
Thread _thread;
object _state;
EventWaitHandle _workEvent;
public myThread()
{
_workEvent = new ManualResetEvent(false);
_thread = new Thread(new ThreadStart(invoke));
_thread.IsBackground = true;
_thread.Start();
}
void invoke()
{
while (_workEvent.WaitOne())
{
A();
_workEvent.Reset();
}
}
public bool IsBusy
{
get
{
return _workEvent.WaitOne(0);
}
}
public void Run(object state)
{
if (!IsBusy)
{
_state = state;
_workEvent.Set();
}
}
public void A()
{
Console.WriteLine(string.Format("接收到输入信息:{0}", _state));
}
} --------------------编程问答-------------------- 没加队列,只简单写了一个大概 --------------------编程问答-------------------- 好傻的做法,还循环开线程,看不出来有什么意义。
还不如开一个发送线程,把要发送的东西往队列里面一扔就完事了。优雅100倍 --------------------编程问答--------------------
对楼主极度无语。
for (int i = 0; i < 10; i++)
{
System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(SendMessage));
thread.Start();
}
public void SendMessage()
{
}
补充:.NET技术 , C#