正在等待方法完成使用C#?

正在等待方法完成使用C#?,c#,file-io,file-upload,C#,File Io,File Upload,我有一个将文件写入本地磁盘的方法。另一种方法获取该文件并将其上载到sftp服务器。问题是,sftp服务器上的文件是空的。这是我的一小段代码: WriteToLocalFolder(content, filename); WriteToSftpServer(filename, server logon params); 是否在WriteToLocalFolder完成写入之前调用了WriteToSftpServer?如果是,我如何说WriteToSftpServer应该仅在WriteToLocal

我有一个将文件写入本地磁盘的方法。另一种方法获取该文件并将其上载到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());
 }
所以溪流关闭了,我想


谢谢:-)

如果WriteToLocalFolder没有生成单独的线程,这是不可能的。可能您缺少任何方法中的
流.Flush
流.Close
流.Dispose

这取决于
WriteToLocalFolder
中的代码,但听起来更有可能是您正在将内容写入文件,而忘记了
Flush
写入缓冲区。如果不是这样,请编辑您的问题并添加
WriteToLocalFolder
的代码

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

尝试在文件加载的
WriteToSftpServer
内获取断点,查看加载的内容。如果文件加载正确,则始终可以在方法内部“step next”(下一步)查看文件在何处中断

do
  {
     WriteToLocalFolder(content, filename);

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


WriteToSftpServer(filename, server logon params);

此循环将确保在进入下一行之前文件及其内容已存在。

WriteToLocalFolder中的代码是否关闭文件?取决于方法是同步还是异步的。是否可以发布
WriteToLocalFolder()的源代码
?问题可能出在
WriteToLocalFolder
方法的代码中。我打赌文件流中缺少flush或close方法。你能发布你的代码吗?SFTP传输很可能失败。我来掷硬币,你叫正面还是反面。我也会从这里开始。在该断点处,很容易查看磁盘上的文件,并查看实际尝试传输到远程服务器的内容。