等待方法完成使用C#?

时间:2011-02-22 13:05:48

标签: c# file-io file-upload

我有将文件写入本地磁盘的方法。另一种方法获取该文件并将其上载到sftp服务器。问题是,sftp服务器上的文件是空的。这是我的一小段代码:

WriteToLocalFolder(content, filename);
WriteToSftpServer(filename, server logon params);

WriteToLocalFolder 写完之前,是否会调用 WriteToSftpServer ?如果是,我怎么能说 WriteToSftpServer 只有在 WriteToLocalFolder 写完文件后才能启动?

WriteToLocalFolder 在真实代码中如下所示:

 public static void WriteToFolder(StringBuilder content, string whereTo)
 {
    File.WriteAllText(whereTo, content.ToString());
 }

所以我认为流已关闭......

谢谢: - )

4 个答案:

答案 0 :(得分:2)

WriteToSftpServer中的代码不应该在WriteToLocalFolder完成之前发生(因为它似乎不是异步)。但是,文件流可能未正确关闭,因此WriteToSftpServer无法访问它。

尝试在WriteToSftpServer内获取加载文件的断点,以查看加载的内容。如果文件正确加载,您可以随时在该方法中“步入下一步”,以查看它在哪里中断。

答案 1 :(得分:0)

如果WriteToLocalFolder没有产生单独的线程,则 NOT 可能。也许您在任何方法中都错过了Stream.FlushStream.CloseStream.Dispose

答案 2 :(得分:0)

这取决于WriteToLocalFolder中的代码,但听起来更有可能是您正在向文件写入内容并忘记Flush写入缓冲区。如果不是这种情况,请修改您的问题并添加WriteToLocalFolder的代码。

答案 3 :(得分:0)

do
  {
     WriteToLocalFolder(content, filename);

  } while ((System.IO.File.Exists(filename) != true));


WriteToSftpServer(filename, server logon params);

此循环将确保文件在到达下一行之前与其内容一起存在..