-1

您好我无法解决 OnLoginSuccess()pubSocket.SendMoreFrame("TopicA").SendFrame("Hello");变量中的问题,因为错误名称 '' 在当前上下文中不存在。

我知道我需要将变量更改为 public,但是当我 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();
    }
}
}
4

1 回答 1

0

如前所述,要么在类中创建一个私有静态变量

private static PublisherSocket  pubSocket;

或将套接字引用传递给您的 OnLoginSuccess 方法。

 static public void OnLoginSuccess(PublisherSocket socket)
 {
       socket.SendMoreFrame("TopicA").SendFrame("Hello");
 }

正如埃文指出的那样,由于使用符号,您的 ref 将被处理掉。完成后将其删除并丢弃。

 var pubSocket = new PublisherSocket()
 {
       pubSocket.Options.SendHighWatermark = 1000;
       pubSocket.Bind("tcp://localhost:12345");
 };

 OnLoginSuccess(pubSocket);
 pubSocket.Dispose();

您可能希望将您的调用放入 try catch finally 并将 dispose 放入 finally 以确保它被正确清理。

希望有帮助。

于 2018-05-22T11:54:44.483 回答