【发布时间】:2018-05-22 11:38:26
【问题描述】:
您好,由于错误,我无法修复 OnLoginSuccess() pubSocket.SendMoreFrame("TopicA").SendFrame("Hello"); 变量中的问题
当前上下文中不存在名称“”。
我知道我需要将变量更改为公共但是当我添加
static public PublisherSocket pubSocket = new PublisherSocket();
在课程开始时,代码无法正常工作。
另外,问题是我需要在 Main() 中设置一些选项(.Options,.Bind)。
using System;
using System.Threading;
using NetMQ;
using NetMQ.Sockets;
namespace Publisher
{
class Program
{
static public void OnLoginSuccess()
{
pubSocket.SendMoreFrame("TopicA").SendFrame("Hello");
}
static void Main(string[] args)
{
using (var pubSocket = new PublisherSocket())
{
pubSocket.Options.SendHighWatermark = 1000;
pubSocket.Bind("tcp://localhost:12345");
}
OnLoginSuccess();
}
}
}
【问题讨论】:
-
您的 pubSocket 仅在您的 Main() 中声明,而不在 OnLoginSuccess 中声明
-
听起来您需要将变量声明为静态字段,但您仍然可以在
Main中初始化它。 (或者可能会更改您的设计,以便将其传递给OnLoginSuccess()。) -
另一个问题是
pubSocket也会在onLoginSuccess被调用时被释放。