我的程序看起来像这样:
public partial class It
{
static StreamWriter logging
= new StreamWriter(new FileStream(@"C:\log",FileMode.Create));
void someFn()
{
logging.WriteLine("foo");
logging.Flush();
/// killed here in debugger with Shift+F5
}
}
文件没有以“foo
”结尾的问题,似乎没有发生冲洗。我在这里滥用什么东西吗?我需要一个“当我返回时位于文件中的位”功能,是否存在这样的事情?
理想的情况是,如果我在那一点上突破,另一个过程将会看到写下最后一行。
答案 0 :(得分:2)
我记得我也遇到过这个问题。 我认为你必须刷新底层的FileStream而不是StreamWriter
答案 1 :(得分:1)
我认为你的代码应该像你期望的那样工作。我想知道你是否将构建模式设置为Release和/或在调试器中看到的源代码与实际执行的代码之间存在差异。如果项目设置为在发布模式下构建,则优化器可能会移动一些代码,而您所在的源代码行可能无法准确表示优化代码中发生的情况。
答案 2 :(得分:0)
请您尝试使用此代码告诉我们结果:
class Program
{
static void Main(string[] args)
{
StreamWriter foo = new StreamWriter(new FileStream(@"C:\foo.txt", FileMode.Create));
foo.WriteLine("foo");
StreamWriter bar = new StreamWriter(new FileStream(@"C:\bar.txt", FileMode.Create));
bar.WriteLine("bar");
bar.Flush();
}
}