首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

多个线程掉用同一个处理函数有关问题

2012-02-27 
多个线程掉用同一个处理函数问题当多个线程掉用同一个处理函数的时候,他们是分别建立自己的一个内存块呢还

多个线程掉用同一个处理函数问题
当多个线程掉用同一个处理函数的时候,他们是分别建立自己的一个内存块呢   还要怎么的:比如代码:T
hread[]   threads=new   Thread[100];
                            threads[i]   =   new   Thread(new   ThreadStart(ThreadProc));
                            threads[i].IsBackground=true;
                            threads[i].Start();   //这里将会有几个线程   都调用了ThreadProc()处理函数;

private   void   ThreadProc()  
{  
if(mySocket.Connected)  
{  
statusBar1.Text= "与客户建立连接. ";  
while(true)  
{  
Byte[]   ByteRecv=new   Byte[256];  
mySocket.Receive(ByteRecv,ByteRecv.Length,0);  
string   strRecv=Encoding.BigEndianUnicode.GetString(ByteRecv);  
rtbReceive.AppendText(strRecv+ "\r\n ");  
}  
}  
}  




[解决办法]
函数内的变量是独立的 但是 函数之外的是共用的.
由其他线程 创建的对象则需要委托方式访问 详情请查看msdn
[解决办法]
啊 原来你的可能不行
mySocket 是外部变量 同一时间会冲突
[解决办法]
lock{

}
避免冲突
[解决办法]

statusBar1.Text= "与客户建立连接. ";
执行的时候肯定出错,要用委托方式

mySocket.Receive(ByteRecv,ByteRecv.Length,0);
rtbReceive.AppendText(strRecv+ "\r\n ");
我没试过,但理论上在运行时应该是有问题的
[解决办法]
每个线程都有自己的堆栈的,而函数里定义的变量是在堆栈里创建的`

热点排行