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. 那确实可以改变它。但是,如果没有任何代码,很难确定。

如果这问题所在,则通常是您指的是在循环外声明的捕获变量,但在循环的每次迭代中都会更改。您可以通过声明一个新变量来解决此问题,该变量在循环内获取原始变量的副本,并且仅在 lambda 表达式中使用该副本变量。每次迭代都会在循环内获得一个“新”变量,因此不会有问题。

于 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 回答