获取线程变量运行时值?

时间:2015-11-23 06:44:26

标签: multithreading tcp c++-cli networkstream binaryformatter

我试图做以下事情并遇到问题。这是使用Visual Studio 2015的C ++ / CLI形式。我使用TCP在服务器和客户端之间进行通信,并尝试使用BinaryFormatter作为通信方法。

private: System::Void ServerForm1_MouseMove(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e) {
       //some code that does stuff
       bf->Serialize(socketStream, myobj);

BinaryFormatter在整个主窗体的private:部分中声明。 socketStream在同一位置声明,但在RunServer方法

之前未分配值
void RunServer() {
        TcpListener ^listener = gcnew TcpListener(IPAddress::Any, 12345);
        listener->Start();
        connection = listener->AcceptSocket();
        socketStream = gcnew NetworkStream(connection);

在构造表单时调用

ServerForm1(void)
    {
        InitializeComponent();
        readThread = gcnew Thread(gcnew ThreadStart(this, &ServerForm1::RunServer));
        readThread->Start();
    }

每当我尝试使用bf-> Seralize执行第一个代码示例时,就会发生错误。该函数中socketStream的值显示为null。我还尝试在RunServer()中声明二进制写入器,然后使用binarywriter的BaseStream属性。 BinaryWriter也在RunServer()之外显示为null。

如何在RunServer()之外访问实例版本的socketStream或BinaryWriter,以便我的BinaryFormatter有正确的序列化流?

0 个答案:

没有答案