如何返回一个线程中的变量值

X366ING 2012-10-16 03:50:24
今天写程序的时候遇到一个问题,程序大致如下:

private static string receivedData;

private void SocketServer()
{
//建立Socket连接,接受数据
//将接收到的数据赋值给静态变量receivedData
string result=Encoding.ASCII.GetString(data,0,recv); //这地方的result已经测试过,确实有数据传进来
receivedData=result;
sock.close();
}

public void Test()
{
Thread testThread=new Thread(SocketServer);
testThread.Start();
Assert.AreEqual("abc",receivedData);
}

程序运行后,Assert一直是fail,receiveData一直是null。请教大侠们是怎么回事,receivedData是个静态变量,线程内result变量确实收到了数据,再赋值给receivedData,为什么还是null? 因为其他原因,SocketServer必须以线程的方式启动。
...全文
72 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
X366ING 2012-10-17
  • 打赏
  • 举报
回复
谢谢您的回答
[Quote=引用 1 楼 的回复:]

在testThread.Start();后面加如下代码。
C# code

while (testThread.IsAlive) ;



因为线程还没执行完成你就执行断言了。。
[/Quote]
Hauk 2012-10-16
  • 打赏
  • 举报
回复
在testThread.Start();后面加如下代码。

while (testThread.IsAlive) ;


因为线程还没执行完成你就执行断言了。。

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧