OK 文字列とブール値の 2 つの静的メンバーを持つ静的クラスがあります。
public static メソッドは、渡されたパラメーターの状態に基づいて、これらのメンバーに値を割り当てます。
次に、静的メンバーを処理するプライベート静的メソッドが呼び出されます。
問題は、ブール値がパブリック関数で設定された値を保持する一方で、文字列は保持されないことです。デフォルトで初期化された値に戻ります。どうしてこれなの?
簡略化したコードを以下に示します。
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");