0

文字列に関するこの奇妙な問題に直面しています。

次のような文字列を割り当てました。

string temp = DateTime.UtcNow.ToString("s");
_snapShotTime = string.Copy(temp);

//here threads started....
//while thread progressing I am passing  _snapShotTime to create a directory.
//same in second threads.

しかし、ローカルプライベート変数の時間は_snapShotTime変化し続けています。どうしてか分かりません。ローカル変数とコピー値を使用しました。

ありがとう

4

3 に答える 3

1

あなたのスレッドは、をキャプチャ _snapShotTimeするラムダ式 (または無名関数) を使用していると思われます。それは確かにそれを変更することを可能にするでしょう. ただし、コードなしで確実に言うのは難しいです。

これ問題である場合は、通常、ループの外側で宣言されているが、ループの反復ごとに変更されているキャプチャされた変数を参照していることが原因です。これを修正するには、ループ内で元の変数のコピーを取る新しい変数を宣言し、そのコピー変数のみをラムダ式で使用します。反復ごとにループ内で「新しい」変数を取得するため、問題は発生しません。

于 2012-05-05T07:17:15.817 に答える
0

やってみませんか

_snapShotTime = DateTime.UtcNow.ToString("s");

また、その行にブレークポイントを配置し、いつ呼び出されるかを確認します。

壊れたら、スタックを見て、物事を明確にします。

あなたのスレッドが _snapShotTime の値を変更していると思われます

于 2012-05-05T07:17:10.680 に答える
0

文字列は不変であり、変数が新しい文字列に再割り当てされない限り変更されません。

問題を特定するには、さらにコードを確認する必要があります。

于 2012-05-05T07:22:06.273 に答える