-3

DateTime 型の 2 つのメンバー (_starttime と _stoptime ) を持つオブジェクトがあります。

デバッガーで次のメソッドを呼び出すと、すべてが期待どおりに機能します。_stoptime は、waittime の TimeSpan 値に基づいて将来設定される新しい DateTime オブジェクトへの参照になります。

ただし、オブジェクトをサーバーにデプロイして呼び出すと、元の DateTime オブジェクト ( _starttime ) への参照が返されます。

私はとても混乱しています。何かご意見は?

    public void Restart()
    {
        _starttime = DateTime.Now;
        _stoptime = _starttime.Add(_waittime);
    }

追加した:

値を変更した後、次の方法でテストします。

            Debug.Assert(  Object.ReferenceEquals(RunInterval.StartTime, RunInterval.StopTime), "StartTime and StopTime are a reference same object");

RunInterval はオブジェクトであり、プロパティは内部メンバーを返すだけです..

前に言ったように、Visual Studio を使用している場合は期待どおりに動作します。私が気付いていない何らかの最適化が行われているのではないかと疑っています。

4

1 に答える 1

2

Trace.Assertあなたが真実であると信じていることを主張するために、いくつかのステートメントを追加してください。例えば:

Trace.Assert(_waittime > (TimeSpan)0);
Trace.Assert(_stoptime == _starttime + _waittime);

おそらくお金はかかりませんが、投稿した小さなスニペットから他の誰も見つけられないコードのバグを見つけることができます。

于 2013-10-21T14:36:38.330 に答える