Хорошо, у меня есть статический класс с двумя статическими членами, строковым и логическим.
Общедоступный статический метод присваивает значения этим членам на основе состояния переданных параметров.
Затем вызывается закрытый статический метод, который обрабатывает статические члены.
Проблема в том, что логическое значение сохраняет значение, установленное в публичной функции, а строка — нет; по умолчанию он возвращается к своему инициализированному значению. Почему это так?
Ниже приведен упрощенный код.
static class MessageHandler
{
private static String m_messageToSend = String.Empty;
private static bool m_requiresACK = false;
public static void Send(String message)
{
//formatting etc (actual method sets more fields)
m_messageToSend = message;
m_requiresACK = true;
Send();
}
private void static Send()
{
SendMessageDelegate sendDelegate = DoSend;
//At this point m_requiresACK remains true but m_messageToSend does not
//hold value of message; it is empty.
IAsyncResult ar = sendDelegate.BeginInvoke(m_messageToSend, m_requiresACK);
//rest of function
}
}
//some other class
MessageHandler.Send("Hello");