имя '' не существует в текущем контексте - PullRequest
0 голосов
/ 22 мая 2018

Привет, я не могу исправить проблему в OnLoginSuccess () pubSocket.SendMoreFrame("TopicA").SendFrame("Hello"); переменная из-за ошибки: имя '' не существует в текущем контексте.

Я знаю, что мне нужно изменить переменную на общедоступнуюно когда я добавляю static public PublisherSocket pubSocket = new PublisherSocket(); в начале класса, код не работает должным образом.Кроме того, проблема в том, что мне нужно установить некоторые параметры (.Options, .Bind) в Main ().

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();
    }
}
}

1 Ответ

0 голосов
/ 22 мая 2018

Как уже говорилось, либо создайте личную статическую переменную в классе

private static PublisherSocket  pubSocket;

, либо передайте ссылку на сокет в свой метод OnLoginSuccess.

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

Как указывал Эван, ваша ссылкабыл бы удален из-за использования записи.Удалите это и утилизируйте, как только вы закончите с ним.

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

 OnLoginSuccess(pubSocket);
 pubSocket.Dispose();

Возможно, вы захотите, наконец, поместить свой вызов в пробную ловушку и поместите удаление в наконец, чтобы убедиться, что он очищен правильно.

Надеюсь, это поможет.

...